博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YJX_Driver_015_DDK_HelloWorld卸载例程细化
阅读量:5082 次
发布时间:2019-06-13

本文共 1433 字,大约阅读时间需要 4 分钟。

1、

【178】复制第12课的代码,用vs2003(VC7.0)打开

【360】把部分代码 放到新建的头文件(mini_ddk.h)里面,然后项目再 "添加现有项"

  【592】此时 "重新生成解决方案",OK

ZC: 可以将“L"\\Device\\yjxDDK_Device"”和“L"\\??\\yjx888"” 做成全局变量,统一管理

ZC: 或者 将 devName 和 symLinkName 做成全局变量,统一管理

【1125】IoDeleteSymbolicLink 函数

 

【1445】卸载例程 中有一个传入参数 PDRIVER_OBJECT,但是它是一个驱动对象指针,但是它下面就有一个设备对象 它也是一个链表

【1500】先删除 读好连接,再删除 设备对象

VOID DDK_Unload(IN PDRIVER_OBJECT _pDrvierObject)

{

  PDEVICE_OBJECT pDev; // 用来取得要删除的设备对象

  UNICODE_STRING symLinkName;

 

  pDev = _pDrvierObject->DeviceObject;

  IoDeleteDevice(pDev); // 删除设备

  // 取得符号链接的名字

  RtlInitUnicodeString(&symLinkName, L"\\??\\yjx888");

  IoDeleteSymbolicLink(&symLinkName);

 

  KdPrint(("驱动成功被卸载...OK----------"));

}

【1800】_pDrvierObject->DeviceObject; 取得设备链表的头部。它是一个链表,如果有多个设备的话,用 DEVICE_OBJECT.NextDevice 来遍历(ZC: 具体是使用 设备名 还是别的东西(属性)来匹配,他没说... 用不着匹配,∵是在下载驱动,所以该驱动对象下面的所有设备对象/符号链接 都要删掉,直接全部遍历删掉即可)。

  ∵ 我们这里只创建了一个设备,于是不需要遍历查找,直接删除第一个就成

【2460】有多个设备的情况下,我们一般是把它保存到设备扩展项(IoCreateDevice时分配空间)里面,把符号链接和设备对象都存在设备扩展项里面,然后通过遍历循环 来删除所有的符号链接和设备对象

 

【2690】再用DDK编译一下

  【2727】驱动文件改名

  【2755】DriverMonitor载入驱动  【2816】看到驱动能够被反复的加载/运行/卸载  【2870】再用"Kernel Detecive v1.3.0"看一下,已经没有 该驱动了,已经被正常的卸载了。再用DriverMonitor运行驱动,再看"Kernel Detecive"驱动在列表里面。用DriverMonitor卸载驱动,再看"Kernel Detecive"驱动没有在列表里面,被正常的卸载了。

 

【3100】再用DDK编译 第12课 的驱动,测试 看现象

  【3205】虽然 DriverMonitor 提示卸载成功,但是 看"Kernel Detecive" 驱动还是在列表里面(没有真正的卸载成功),再用 DriverMonitor运行驱动,就报错了

 

 

2、

 

转载于:https://www.cnblogs.com/debugskill/p/5341313.html

你可能感兴趣的文章
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
session如何保存在专门的StateServer服务器中
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
PHP上传RAR压缩包并解压目录
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>