[英]Windows 8: CreateFile() returns INVALID_HANDLE_VALUE, immediate GetLastError shows 0
[英]CreateFile returns error INVALID_HANDLE_VALUE (for COM port), and GetLastError returns “can't find file specified”
我打開一個端口與設備通信並控制設備,但CreateFile()
函數返回INVALID_HANDLE_VALUE
。
GetLastError()
返回2
,這意味着它找不到指定的文件。
我的代碼如下所示:
wsprintf( szPort, "COM%d", nPort );
m_hIDComDev = CreateFile(szPort,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);
if (m_hIDComDev == INVALID_HANDLE_VALUE)
{
DWORD err=GetLastError();
}
為什么會出現這個問題?
問題是您沒有為串行端口指定lpFileName
的正確值。 你應該使用這種格式:
"\\\\.\\COM%d"
這將導致字符串看起來像\\\\.\\COM1
,這是正確的格式。
嘗試使用
char *szPort = _T("COM1"); // Change port number to your unused existing port
_T
強制將szPort保存為ASCII。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.