阅读:843回复:5
老猪,进来,问个问题用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2004-01-28 15:54
有什么好处 :D
不过这问题我也不会解决!555 我帮你问问 ;) |
|
|
板凳#
发布于:2004-01-28 15:55
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2004-01-28 15:59
你为什么把问题给删了啊?
我写wdm驱动,怎么用DO_DIRECT_IO模式,怎么在IoControl里一访问MdlAddress就死机,调试提示是访问内存错误,这是怎么回事? |
|
|
地下室#
发布于:2004-01-28 20:53
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2004-01-28 22:15
会不会应用程序传到驱动里的BUFFER是NULL的?
或者你访问的方法不对? 下面是一个usb的ioctl例程: BOOL bResult = FALSE; char *Buffer = (char *)malloc(1024); unsigned long ulLength = 1024; unsigned long nBytes = 0; bResult = DeviceIoControl(hDevice,//设备句柄 IOCTL_ISP1581_BULK_READ, NULL, 0, Buffer, uiLength, &nBytes, NULL);//读取数据 if(!bResult) { //如果是同步传输此处加上报错信息。 } 驱动里作如下操作: ULONG bufferLength = MmGetMdlByteCount(Irp->MdlAddress); UsbBuildInterruptOrBulkTransferRequest(urb, //ptr to urb urbSize, //size of urb pipeHandle, //usbd pipe handle NULL, //TransferBuffer Irp->MdlAddress,//NULL, //mdl bufferLength, //bufferlength transferFlags, //flags NULL); //link 可以用softice跟踪到驱动里,看看对应的参数是否是期望的。 |
|