Следующий код работает под одним ПК, но не на другом ПК. Оба компьютера имеют ОС Windows 7 в качестве ОС.Win32-Api CreateFile (...) на C++ не удалось
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");
}
Выход ПК, который успешно открывает файл:
device_name: \\.\interception00
GetLastError (Number): 0, error == ERROR_SUCCESS
Другой ПК не сможет открыть файл. Выход:
device_name: \\.\interception00
GetLastError (Number): 2, error == ERROR_FILE_NOT_FOUND
У кого-то есть ключ, почему это происходит? Может быть, это проблема недостаточных прав?
Возможно, на втором компьютере не запущен драйвер, который создает специальный файл этого устройства. –
Ваша проверка ошибок несколько фиктивная. Вызывайте «GetLastError» только в случае сбоя вызова API. Вы не проверяете наличие сбоя. –