我正在使用CreateFileA,第一次調用它時,它按預期工作。但是當我第二次調用它時,它會返回句柄INVALID_HANDLE_VALUE。可能是什麼問題呢?只是爲了信息,我每次我需要檢查,如果我的USB設備連接時調用它..INVALID_HANDLE_VALUE多次調用CreateFileA
int port = 500;
char port_name [MAX_CAR] = {0};
sprintf_s (port_name, MAX_CAR, "\\\\.\\COM%d", port);
com->id = CreateFileA (port_name,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
編輯:我曾嘗試使用CloseHandle的像CloseHandle的(COM-> ID);但它沒有幫助。
您超出了最大打開文件句柄。確保在使用後關閉手柄以使其無效。 – GlGuru 2014-09-19 13:23:49
只要你不添加適當的錯誤報告,你就會失明。使用GetLastError()在串口調試時永遠不可選,太多的事情可能會出錯,超出你的控制範圍。 – 2014-09-19 13:37:45
您的CloseHandle()調用實際上是否正在執行?當你斷行時,'com-> id'的值是否與CreateFileA()調用返回的值相同?當時你還沒有破壞com?另外,@HansPassant說。 – 2014-09-19 14:24:32