请教大家一个关于DeviceIoControl的问题

geniusdhc 2006-06-16 10:13:23
我最近在学习DWM编程,但是在驱动的测试程序里调用DeviceIoControl的地方总是返回false,请问这是什么原因?是哪里设置不对吗?
MSDN上说DevicesdIoControl成功时 j候应该返回一个非0值,怎么回事?
这是自动产生的代码 ,我没有更改过:
if (!DeviceIoControl(hDevice,
DHCREGSAMPLE_IOCTL_READSTRING,
bufInput,
IOCTL_INBUF_SIZE,
bufOutput,
IOCTL_OUTBUF_SIZE,
&nOutput,
NULL)
)
{
printf("ERROR: DeviceIoControl returns %0x.", GetLastError());
Exit(1);
}

闲分数不够的话再加。
谢谢大家!
...全文
595 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphapiao 2006-06-27
  • 打赏
  • 举报
回复
0x57 参数不对.
0x1f 连接的设备不起作用。
jiangfb 2006-06-20
  • 打赏
  • 举报
回复
DeviceIoControl的返回的值是驱动里面IRP_MJ_DEVICE_CONTROL例程,处理DHCREGSAMPLE_IOCTL_READSTRING是给的Status决定的

错误号87:The parameter is incorrect.
可能是你Input和Output的buffer指针或者大小设置不对
geniusdhc 2006-06-19
  • 打赏
  • 举报
回复
u
theone 2006-06-17
  • 打赏
  • 举报
回复
先看看驱动中有没有收到这个IOCTRL
geniusdhc 2006-06-17
  • 打赏
  • 举报
回复
我创建了两个工程,一个GetLastError=0x57,另一个GetLastError=0x1f,
请大伙帮我看看。
geniusdhc 2006-06-17
  • 打赏
  • 举报
回复
monitor的跟踪信息是
Entering CharSampleDevice::Create, IRP: Major=IRP_MJ_CREATE Minor=0x0 Flags=0x884

CharSampleDevice::Create Status 0x00000000
Entering CharSampleDevice::Device Control, IRP: Major=IRP_MJ_DEVICE_CONTROL Minor=0x0 Flags=0x70
Code=0x222000 InputSize=0x200 OutputSize=0x200

Entering CharSampleDevice::CHARSAMPLE_IOCTL_READ_Handler, IRP: Major=IRP_MJ_DEVICE_CONTROL Minor=0x0 Flags=0x70
Code=0x222000 InputSize=0x200 OutputSize=0x200

Entering CleanUp, IRP: Major=IRP_MJ_CLEANUP Minor=0x0 Flags=0x404

Entering CharSampleDevice::Close, IRP: Major=IRP_MJ_CLOSE Minor=0x0 Flags=0x404

CharSampleDevice::Close Status 0x00000000

哪位指点一下,
DentistryDoctor 2006-06-16
  • 打赏
  • 举报
回复
GetLastError=?

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧