Win32-Api CreateFile(...) в C++ не удалось

Следующий код работает на одном ПК, но не на другом ПК. На обоих ПК установлена ​​ОС 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");
}

Вывод ПК, который успешно открывает файл:

device_name: \\.\interception00
GetLastError (Number): 0, error == ERROR_SUCCESS

Другой компьютер не может открыть файл. Выход:

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

У кого-нибудь есть подсказка, почему это происходит? Может быть, это проблема недостаточных прав?

1 ответ

Решение

Из MSDN CreateFile() документация:

OPEN_EXISTING

Открывает файл или устройство, только если оно существует.

Если указанный файл или устройство не существует, функция завершается ошибкой, и для кода последней ошибки установлено значение ERROR_FILE_NOT_FOUND (2).

Так что это означает, что \\\\.\\interception00 существует на одном компьютере, но не на другом. Попробуйте поискать какую-нибудь другую программу, которая обычно способна открыть файл / устройство.

Или просто исправить это \\\\.\\interception00 не доступен.

Другие вопросы по тегам