(二)NT驱动基础——可动态卸载驱动编写 和 其安装卸载

本文介绍了如何在NT驱动中添加卸载函数以实现动态卸载。通过改造原有的HelloWorld驱动程序,新增卸载函数用于释放资源和删除设备。此外,还提供了编译及安装驱动的方法。

上一篇文章我们编写了NT驱动的Hello World,但是编译好的驱动如何安装和卸载呢?

 

事实上,上篇的hello World代码可以安装,不能动态卸载。

 

所以我们来改造以下原来的代码,在驱动程序上添加卸载函数

一、代码改造(新添加代码为红色

//Hello World.c


VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
 PDEVICE_OBJECT pNextDevice;
 pNextDevice=DriverObject->DeviceObject;

 

 

//删除设备链
 while(pNextDevice)
 {
    PDEVICE_OBJECT pOldDevice=pNextDevice;
    pNextDevice=pNextDevice->NextDevice;
    IoDeleteDevice(pOldDevice);  

 

 }

 DbgPrint("Driver over/n");

}

 

 

 

 

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,但是打开对话框后,并没有显示该图标

       只能手工输入

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值