带有输入无符号字符缓冲区 C++ 的 DeviceIoControl
Posted
技术标签:
【中文标题】带有输入无符号字符缓冲区 C++ 的 DeviceIoControl【英文标题】:DeviceIoControl with input unsigned char buffer C++ 【发布时间】:2012-10-09 13:06:25 【问题描述】:我在使用 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"
。
【讨论】:
以上是关于带有输入无符号字符缓冲区 C++ 的 DeviceIoControl的主要内容,如果未能解决你的问题,请参考以下文章