ironfacer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-16
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:949回复:2

向斑竹求教几个疑惑

楼主#
更多 发布于:2004-10-12 21:18
我用如下的代码从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:
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-10-12 22:36
这要看你驱动部分的代码是如何实现的了.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
ironfacer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-16
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-13 09:20
我的驱动程序是用DS写的,在驱动程序中我将寄存器的内容读到
I.IoctlBuffer();返回的buf中,设置完成IRP的information和status之后,用PnpNextIrp完成这个IRP,开始下一个IRP。
    除此之外,是不是还有什么工作没做?
游客

返回顶部