以下代碼在一臺PC上工作,但不在其他PC上工作。兩臺PC都有Windows 7作爲其操作系統。Win32-Api C++中的CreateFile(...)失敗
char device_name[] = "\\\\.\\interception00";
printf("device_name: %s \n", device_name);
device_array[i].handle = CreateFile(device_name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
DWORD error = GetLastError();
printf("GetLastError (Number): %d, ", error);
if (error == ERROR_FILE_NOT_FOUND)
{
printf("error == ERROR_FILE_NOT_FOUND \n");
}
else if (error == ERROR_SUCCESS)
{
printf("error == ERROR_SUCCESS \n");
}
else
{
printf("error == UNBEKANNT \n");
}
的PC是成功的輸出打開文件:
device_name: \\.\interception00
GetLastError (Number): 0, error == ERROR_SUCCESS
其他PC無法打開該文件。輸出是:
device_name: \\.\interception00
GetLastError (Number): 2, error == ERROR_FILE_NOT_FOUND
有人知道爲什麼會發生這種情況嗎?也許這是一個權利不足的問題?
也許第二臺計算機沒有運行創建該設備專用文件的驅動程序。 –
您的錯誤檢查有些虛假。如果API調用失敗,只調用'GetLastError'。你不檢查失敗。 –