У меня проблема с использованием DeviceIOControl
поставить 128-байтовый буфер для моего драйвера, я использую этот код:
int Initialize(unsigned char* public_signature, int size)
{
int ret = DeviceIoControl(
DeviceFileHandle,
2236440,
public_signature,
size,
NULL,
0,
NULL,
NULL);if(ret != 0)
return 0;
wprintf(L"Format message failed with 0x%x\n", GetLastError()); // always error 0x6!
return 1;
}
Я всегда получаю ошибку 0x6, что я делаю не так?
обн
Моя функция создания ручки:
int CreateFileHandle()
{
DeviceFileHandle = CreateFile( L"\Device\test",
GENERIC_WRITE,
GENERIC_READ | GENERIC_WRITE,
NULL,
OPEN_EXISTING,
0,
0);
if(DeviceFileHandle)
return 0;
return 1;
}
Ошибка в 1-м параметре CreateFile
, В вашем примере он попытается открыть файл, а не устройство. Кроме того, вы не избежали обратной косой черты в строке. \t
и подобные интерпретируются как специальные символы в C ++.
Название устройства должно быть "\\\\.\\Device\\test"
,
Других решений пока нет …