C ++中的Win32-Api CreateFile(...)失败

时间:2016-03-23 16:41:33

标签: c++ windows winapi device createfile

以下代码在一台PC上运行,但在另一台PC上运行。两台PC都有Windows 7作为他们的操作系统。

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 

有人知道为什么会这样吗?也许这是权利不足的问题?

1 个答案:

答案 0 :(得分:3)

来自MSDN的CreateFile() documentation

  

OPEN_EXISTING

     

仅在文件或设备存在时打开它。

     

如果指定的文件或设备不存在,则该函数失败,最后一个错误代码设置为ERROR_FILE_NOT_FOUND(2)。

所以这意味着\\\\.\\interception00存在于一台计算机上但不存在于另一台计算机上。尝试查看通常能够打开文件/设备的其他程序。

或者只修复\\\\.\\interception00不可用。