keven007
驱动牛犊
驱动牛犊
  • 注册日期2002-03-06
  • 最后登录2002-07-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1442回复:2

帮忙!WriteFileEx为什么不调用设置的完成路径

楼主#
更多 发布于:2002-04-16 20:41
本人写下WriteFileEx代码,调试发现驱动程序完成IRP处理后不调用设置的路径,不知为什么。    
。。。。。。
Result=WriteFileEx(
              AdapterObject->hFile,
              lpPacket->Buffer,
              lpPacket->Length,
              &lpPacket->OverLapped,
     PacketCompletePacket  //完成路径            
              );

。。。。。。
//完成路径定义
VOID CALLBACK PacketCompletePacket(
 DWORD dwErrorCode,                // completion code
  DWORD dwNumberOfBytesTransfered,  // number of bytes transferred
  LPOVERLAPPED lpOverlapped                              // information
)

{
    WaitForSingleObject(IRPCountMutex,INFINITE);

    PacketFreePacketArray(lpStack[IRPCount]);
    lpStack[IRPCount]=NULL;
    IRPCount--;
    
    ReleaseMutex(IRPCountMutex);

return ;
}


jeffhu
驱动牛犊
驱动牛犊
  • 注册日期2002-02-21
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-18 14:47
1. 最好用softice在驱动程序中设断点,看看在驱动中有
   什么问题
2. 也可以在writefileEx之后用GetOverlappedResult
   看是超时还是返回错误,可以参考错误码

luck
hehe
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-20 10:27
首先,我得说明我已很久没有写这方面程序了,我只是有点记忆,现在也没有环境,如果有错误的话,请一笑了之。
1、确信Result==1
2、如果不进入回调函数,那么就说明driver要么没有写成功(可能是发送成功),要么是发送后,没有返回SUCCESS,或驱动中有发送完成后的函数没有进一步处理(所谓发送完成后的函数的申明是在DriverEntry时,要注册时,你自己填写的很多函数之一)。
一剑西来,天外飞仙
游客

返回顶部