windows中的过滤绑定如何动态卸载
来源:互联网 发布:淘宝优惠劵网站源码 编辑:程序博客网 时间:2024/06/10 10:17
windows中的过滤绑定如何动态卸载
前面只说了如何绑定,但是没说如何解除绑定。如果要把这个模块做成可以动态卸载的模块,则必须提供一个卸载函数。我们应该在卸载函数中完成解除绑定的功能;否则,一旦卸载一定会蓝屏。
这里涉及到3个内核API:一个是IoDetachDevice,负责将绑定的设备解除绑定;另一个是IoDeleteDevice,负责把我们前面用IoCreateDevice生成的设备删除掉以回收内存;还有一个是KeDelayExecutionThread,纯粹负责延时。这三个函数的参数相对简单,这里就不详细介绍了,需要的读者请查阅WDK的帮助。
卸载过滤驱动有一个关键的问题:我们要终止这个过滤程序,但是一些IRP可能还在这个过滤程序的处理过程中。要取消这些请求非常的麻烦,而且不一定能成功。所以解决方案是等待5秒来保证安全地卸载掉。只能确信这些请求会在5秒内完成,同时等待之前我们已经解除了绑定,所以这5秒内不会有新请求发送过来处理。这对于串口而言是没问题的,但是并非所有的设备都如此。所以读者在后面的章节会看到不同的处理方案。
更多精彩资源:
web开发专栏:http://blog.csdn.net/broadviewwebdev
数据库开发专栏:http://blog.csdn.net/broadviewdatabase
程序设计专栏:http://blog.csdn.net/broadviewprograming
安全专栏:http://blog.csdn.net/BroadviewSecurity
- windows中的过滤绑定如何动态卸载
- Windows phone 7中的动态绑定例子
- 如何理解C++中的动态绑定
- 如何卸载Windows 7中的IE10并还原到IE9
- 如何卸载Windows 7中的IE10并还原到IE9
- 如何完全禁用或卸载Windows 10中的OneDrive
- 如何完全禁用或卸载Windows 10中的OneDrive
- 如何完全禁用或卸载Windows 10中的OneDrive
- 如何卸载Windows服务!
- windows如何卸载服务
- windows如何卸载服务
- 如何理解C++中的动态绑定(dynamic binding)
- 如何理解C++中的动态绑定(dynamic binding)
- 如何动态绑定DataList 的EditItemTemplate中的控件DropDownList
- 如何使<a>标签中的 href 属性动态绑定
- C++中的动态绑定
- C++ 中的动态绑定
- C++中的动态绑定
- 梦,失控
- php在apache中安装模式的区别:fastcgi和mod_php
- 用DBA角色获得Oracle数据库连接的方法
- 使用FLEX 和 Actionscript开发FLASH 游戏—嵌入资源和增加游戏元素
- 杀死指定程序名的所有进程
- windows中的过滤绑定如何动态卸载
- 靳氏DIV布局兼容“武林秘诀”
- javascript的小括号
- 借助内存表处理复杂的oracle查询要求
- Debugs
- PetShop 缓存技术
- C++文件流操作
- Windows服务应用程序
- 操作系统历史列表