【发布时间】:2016-07-11 02:02:02
【问题描述】:
以下代码在一台 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
另一台电脑无法打开文件。输出是:
device_name: \\.\interception00
GetLastError (Number): 2, error == ERROR_FILE_NOT_FOUND
有人知道为什么会这样吗?可能是权限不足的问题?
【问题讨论】:
-
可能第二台计算机没有运行创建该设备特殊文件的驱动程序。
-
您的错误检查有些虚假。仅当 API 调用失败时才调用
GetLastError。你不检查失败。
标签: c++ windows winapi device createfile