具有输入无符号字符缓冲区C++的设备 IoControl
DeviceIoControl with input unsigned char buffer C++
我在使用 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%xn", GetLastError()); // always error 0x6!
return 1;
}
我总是0x6错误,我做错了什么?
上发我的句柄创建功能:
int CreateFileHandle()
{
DeviceFileHandle = CreateFile( L"Devicetest",
GENERIC_WRITE,
GENERIC_READ | GENERIC_WRITE,
NULL,
OPEN_EXISTING,
0,
0);
if(DeviceFileHandle)
return 0;
return 1;
}
错误在 CreateFile
的第一个参数中。在您的示例中,它将尝试打开文件,而不是设备。此外,您没有转义字符串中的反斜杠。 t
和类似字符在C++中被解释为特殊字符。
设备名称应为 "\\.\Device\test"
。