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



以下代码可在一台电脑上运行,但不能在另一台电脑中运行。两台电脑的操作系统都是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

另一台电脑无法打开该文件。输出为:

device_name: \.interception00
GetLastError (Number): 2, error == ERROR_FILE_NOT_FOUND 

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

来自MSDN的CreateFile()文档:

打开现有

仅当文件或设备存在时,才打开该文件或设备。

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

这意味着\\.\interception00存在于一台计算机上,而不存在于另一台计算机中。尝试使用其他通常能够打开文件/设备的程序进行查找。

或者只是修复\\.\interception00不可用的问题。

最新更新