Henry
驱动牛犊
驱动牛犊
  • 注册日期2001-04-27
  • 最后登录2011-06-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1200回复:3

WM_MJ_CLOSE返回后出错??(急!!!)

楼主#
更多 发布于:2002-07-15 11:49
小弟在写HID Lower Filter Driver时,完成WM_MJ_CLOSE动作之后,系统在_VWIN32_CloseVxDHandle + 0121处出错。不知是什么原因,请各位大虾指教。

我的Filter Driver层次如下:

1. DriverEntry

2. Dispatch Irp
   处理了DeviceIoControl, Create, Close, Read, Pnp.

3. DeviceIoControl
   1. 自己定义的ControlCode.
   2. 其它的发给下层驱动程序处理

4. CreateClose:
   1. 对于我的用户程序建立的文件对象,直接返回成功。
   2。对于系统建立的文件对象,发给下层驱动程序处理。

5. Read
   1。设置CompletionRoutine.
   2. 将Irp发给下层驱动程序处理
   3. 在CompletionRoutine用DbgPrint输出读到的数据。

6. Pnp
   1. MN_REMOVE_DEVICE:
   将Irp发给下层驱动程序,等待Pending Read完成后Detach Device, Delete Device Object.
   2.其它的发给下层驱动程序处理
驱动人生。
Henry
驱动牛犊
驱动牛犊
  • 注册日期2001-04-27
  • 最后登录2011-06-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-17 13:45
怎么没有人回答?大虾都跑哪里去了?
驱动人生。
zzfd97
驱动小牛
驱动小牛
  • 注册日期2002-02-01
  • 最后登录2005-07-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-17 14:27
我不知道你是否在你的例程里是否有释放你分配的内存池呢?
Henry
驱动牛犊
驱动牛犊
  • 注册日期2001-04-27
  • 最后登录2011-06-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-18 09:49
这个问题已经困扰我好久了,我也仔细检查过我的程序,所有程序分配的内存都有释放。

最近的调试结果:
去掉READ例程中的COMPLETION ROUTINE,直接使用IoSkipCurrentIrpStack,然后IoCallDriver,没有任何问题.
加上CompletionRoutine, 则问题出现。
驱动人生。
游客

返回顶部