(二)NT驱动基础——可动态卸载驱动编写 和 其安装卸载
来源:互联网 发布:古天乐小学 知乎 编辑:程序博客网 时间:2024/05/17 04:14
上一篇文章我们编写了NT驱动的Hello World,但是编译好的驱动如何安装和卸载呢?
事实上,上篇的hello World代码可以安装,不能动态卸载。
所以我们来改造以下原来的代码,在驱动程序上添加卸载函数
一、代码改造(新添加代码为红色)
//Hello World.c
//删除设备链 } DbgPrint("Driver over/n"); }
VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
PDEVICE_OBJECT pNextDevice;
pNextDevice=DriverObject->DeviceObject;
while(pNextDevice)
{
PDEVICE_OBJECT pOldDevice=pNextDevice;
pNextDevice=pNextDevice->NextDevice;
IoDeleteDevice(pOldDevice);
NTSTATUS DriverEntry( PDRIVER_OBJECT pDriver,PUNICODE_STRING pRegistryPath)
{
DbgPrint("DriverEnter end/n");
pDriver->DriverUnload=HelloWorldDriverUnload;
return STATUS_SUCCESS;
}
分析:
1.卸载函数可以为任意名字,将驱动入口函数DriverEntry的pDriver->DriverUnload赋值为该卸载函数名即可。
2.NT驱动的卸载函数的编写内容,一般作两件事,一是释放动态内存,二是删除驱动设备。另外,像本例一样打印调试信息也是必不可少的。
二、编译后安装
1.编译方法与上篇文章一样
2.安装
(1)打开软件SRVINSTW
(2)按浏览选择编译好的hello World.sys,但是打开对话框后,并没有显示该图标
只能手工输入
- (二)NT驱动基础——可动态卸载驱动编写 和 其安装卸载
- Nt驱动的安装和卸载
- NT式驱动安装卸载
- WDM驱动改可手动加卸载的NT驱动
- NT驱动加载与卸载
- 动态加载驱动和卸载驱动
- 安装和卸载显卡驱动
- 驱动安装与卸载
- Linux 驱动安装卸载
- 卸载、安装驱动注意事项
- 打印驱动的安装和卸载
- 关于动态加载/卸载驱动
- WinCE驱动的动态卸载
- WinCE驱动的动态卸载
- WinCE驱动的动态卸载
- WinCE驱动的动态卸载
- 驱动卸载
- 命令行安装卸载驱动服务
- Iterator和ListIterator
- POJ_2388
- 编译内核出现kernel panic错误
- 虚函数 与派生类屏蔽基类函数
- CheckBox单选
- (二)NT驱动基础——可动态卸载驱动编写 和 其安装卸载
- linux下网站的启动命令。
- PVFS2源代码分析之输入输出src/io/bmi/reference-list引用表
- 设置滚动栏样式
- 如何在Oracle直接使用地址来创建Database Link (DBLink)
- 文件编程(库函数调用)
- 研究下 ClearQuest Attachments 2.0 Packages。特记录
- 编程控制Oralce事务
- linux常用命令汇总