分析了一下其源代码,不是很复杂,不过对其中的一段代码不太清楚。

// 打开设备对象
*status = IoGetDeviceObjectPointer(&name_str, FILE_ALL_ACCESS, &fileobj, &devobj);
if (*status == STATUS_SUCCESS)
ObDereferenceObject(fileobj);
书上是说如果IoGetDeviceObjectPointer 成功,需要调用ObDereferenceObject 来解除引用,否则会引起内存泄漏。 
始终没搞明白,怎么就内存泄漏了。 后来在网上搜了一下微软官网
https://technet.microsoft.com/zh-cn/ff549198(v=vs.80)
里面有详细的介绍。
This routine also returns a pointer to the corresponding file object. When unloading, a driver can dereference the file object as a means of indirectly dereferencing the device object. To do so, the driver calls ObDereferenceObject from its Unload routine, passing the file object pointer returned by IoGetDeviceObjectPointer. 
根据其描述,应该是在驱动卸载的时候,必须要调用ObDereferenceObject,将当初使用IoGetDeviceObjectPointer 函数的引用解除。 
所以个人认为其实该操作可以在卸载驱动的时候调用。 当然了,如果到那个时候调用的话,需要保存其入参,这样考虑的话,放在 IoGetDeviceObjectPointer  成功的时候调用,实现上是最方便的。 

通过 http://download.csdn.net/download/ftyou2000/3944539 里面的工具确实可以看出,我们的驱动对象下有一个设备对象。 (目前本机器只有一个串口)

寒江独钓前辈的第一个例子的部分分析相关推荐

  1. 寒江独钓前辈的第一个例子的编译运行过程

    环境: vs2103 +wdk 7+ 看雪中的2013 模板   可以参考我的上篇文章. 环境ok后,可以编译前辈的驱动例子了. 从网上下载了寒江独钓的第一个驱动例子代码  串口过滤 comcap. ...

  2. 《寒江独钓》内核学习笔记(1)-- IRP - .Little Hann

     原文  http://www.cnblogs.com/LittleHann/p/3450436.html 在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结 ...

  3. 《寒江独钓》内核学习笔记

    <寒江独钓>内核学习笔记(1)-- IRP - .Little Hann 时间 2013-11-30 15:40:00  博客园_.Little Hann原文  http://www.cn ...

  4. 寒江独钓:Windows内核安全编程(china-pub到货首发)

    寒江独钓:Windows内核安全编程(china-pub到货首发) [作 者]谭文;杨潇;邵坚磊等 [丛 书 名] 驱网核心技术丛书  [出 版 社] 电子工业出版社     [书 号] 978712 ...

  5. 寒江独钓(1):内核数据类型和函数

    寒江独钓(1):内核数据类型和函数 零.内核模块所在进程 1.内核模块位于内核空间,而内核空间又被所有的进程共享.因此,内核模块实际上位于任何一个进程空间中. 2.PsGetCurrentProces ...

  6. ETHREAD APC 《寒江独钓》内核学习笔记(4)

    继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 2. 数据结构分析 我们 ...

  7. 寒江独钓-Windows内核安全编程(完整版).pdf

    寒江独钓-Windows内核安全编程(完整版).pdf   编写Windows内核程序,就意味着这个程序可以执行任意指令,可以访问计算机所有的软件.硬件资源.因此,稍有不慎就有可能将系统变得不稳定.W ...

  8. 寒江独钓windows 内核安全编程学习笔记

    寒江独钓windows 内核安全编程学习笔记 本博客记录自己的学习过程,如有侵犯或者打扰请告知. 由于项目的需求,第一次接触到驱动程序.开始学习了寒江大神的的内核安全编程.小白一个,第一章就遇到了问题 ...

  9. 《寒江独钓》键盘过滤部分程序修改

    <寒江独钓>键盘过滤部分程序修改 看书的时候,发现书里第四章的键盘过滤程序并不能实现打印出扫描码详细信息的功能.我将程序修改了一下以后,可以实现该功能.以下是我的修改之处: void __ ...

  10. THREAD APC 《寒江独钓》内核学习笔记(4)

    继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 2. 数据结构分析 我们 ...

最新文章

  1. STM32电源框图解析(VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT等的区别)
  2. 用数据说话——IOPS:RAID1+0 RAID5
  3. java BASE64流 输出图片。
  4. linux 常用快捷键
  5. Python实例--文本词频统计
  6. 公司软件AiDitron中涉及的英文单词及含义
  7. Linux RedHat7.0 上vsftp配置
  8. python黑白棋结课设计报告_黑白棋游戏课程设计
  9. 红橙Darren视频笔记 界面优化与屏幕适配(下)
  10. python 斐波那契数列 yield_Python中的yield到底是个什么鬼?
  11. spring 笔记2:Spring MVC : Did not find handler method for 问题的解决
  12. 快速将多个excel表合并成一个excel表---内附代码
  13. Selenium认识与实战(学习版)
  14. Activiti工作流画图工具介绍
  15. C++ Qt 05:Qt布局管理器 - 荒 木 - 博客园
  16. linux进程家族树,linux下用c语言创建进程树
  17. html头像动画,用CSS3实现头像旋转效动画
  18. 传媒经营之交通广播电台广告的独特个性
  19. 转行的35岁程序员们
  20. 原来自动驾驶离不开OpenStack

热门文章

  1. 高中生如何才能快速提高高二数学成绩
  2. word打不开文档该怎么办?有什么好的方法
  3. STM32CubeMX - 系统框图
  4. 2017年工作总结--初出茅庐
  5. document.writeln
  6. 安徽自招计算机基础考试试题,点划自招|东南大学、中国药大2017年自主招生考情揭秘,附真题。...
  7. RT_thread 临界区保护
  8. 公有云上应该怎么做容灾?
  9. 如何关闭eslint相关规则
  10. JSCORE06(达)