上一篇文章我们编写了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驱动中添加卸载函数以实现动态卸载。通过改造原有的HelloWorld驱动程序,新增卸载函数用于释放资源和删除设备。此外,还提供了编译及安装驱动的方法。
2008

被折叠的 条评论
为什么被折叠?



