阅读:949回复:2
向斑竹求教几个疑惑
我用如下的代码从PCI卡上的一个寄存器中读出一个数据,
Result=DeviceIoControl(hDevice, IOCTL_CODE_DSPIMPLEMENT, NULL, 0, pBuffer, sizeof(USHORT), &BytesReceived, &Overlapped); i=WaitForSingleObject(Overlapped.hEvent,INFINITE); if(i=WAIT_FAILED) { return false; } 在CreateFile中我指定了FILE_FLAG_OVERLAPPED。 问题1:为什么读出的数据是正确的,可是Result==0?我看MSDN上说 如果操作正确,返回值非0; 问题2:按照MSDN上的描述,如果驱动程序完成了这个IRP,Overlapped.hEvent指向的事件会被系统设置为信号态。可是我的if(i=WAIT_FAILED)条件总是为真,也就是说没有等到事件变为信号态? 请斑竹帮忙解答一下。谢谢了!!! 问题2: |
|
沙发#
发布于:2004-10-12 22:36
这要看你驱动部分的代码是如何实现的了.
|
|
|
板凳#
发布于:2004-10-13 09:20
我的驱动程序是用DS写的,在驱动程序中我将寄存器的内容读到
I.IoctlBuffer();返回的buf中,设置完成IRP的information和status之后,用PnpNextIrp完成这个IRP,开始下一个IRP。 除此之外,是不是还有什么工作没做? |
|