阅读:964回复:0
DeviceIoControl的问题
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] |
|