DeviceIoControl с входным беззнаковым буфером переполнения стека

У меня проблема с использованием 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;
}

0

Решение

Ошибка в 1-м параметре CreateFile, В вашем примере он попытается открыть файл, а не устройство. Кроме того, вы не избежали обратной косой черты в строке. \t и подобные интерпретируются как специальные символы в C ++.

Название устройства должно быть "\\\\.\\Device\\test",

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]