我在使用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错误,我做错了什么?
UPD 我的句柄创建功能:
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 :(得分:2)
错误位于CreateFile
的第一个参数中。在您的示例中,它会尝试打开文件,而不是设备。此外,您没有在字符串中转义反斜杠。 \t
和类似的被解释为C ++中的特殊字符。
设备名称应为"\\\\.\\Device\\test"
。