vancaho
驱动牛犊
驱动牛犊
  • 注册日期2004-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分574分
  • 威望100点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分0分
阅读:963回复:0

DeviceIoControl的问题

楼主#
更多 发布于:2005-03-23 23:52
DeviceIoControl()中如果使用了METHOD_BUFFERED的话
是不是在驱动中直接把要输出的内容拷贝到
pIrp->AssociatedIrp.SystemBuffer中就行了?
然后在pIrp->IoStatus.Information中设置了输出的字节
可是我的用户模式程序中的缓冲区总是接收不到数据!
怎么回事啊?
我的程序如下:
#define READ_INAROOTKIT CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_INDEX+1,METHOD_BUFFERED,FILE_ANY_ACCESS)

用户模式程序:
iReadLength=1024;//表示读取的数据
bSuccess=DeviceIoControl(hDevice,READ_INADEVICE,&iReadLength,4,sBuffer,1024,&lBytesRead,NULL);
内核模式的相应的处理如下:
DbgPrint(\"INA_DEVICE:Read  File Request!\\n\");
//测试用,就是把RKFS123发送到sBuffer中的
memcpy(pIrp->AssociatedIrp.SystemBuffer,\"RKFS123\",8);  pIrp->IoStatus.Status=STATUS_SUCCESS;  pIrp->IoStatus.Information=8;
IoCompleteRequest(pIrp,IO_NO_INCREMENT);
return pIrp->IoStatus.Status;


用户模式程序结果是lBytesRead=8
而sBuffer=0xcc......根本不是RKFS123嘛

求教哪位高手解决一下
万分感谢!

[编辑 -  3/24/05 by  vancaho]

[编辑 -  3/24/05 by  vancaho]
游客

返回顶部