WinPcap驱动程序的初始化与清除(六)(6)

2019-01-26 14:21

数。调用IoDeleteSymbolicLink函数删除符号连接,调用IoDeleteDevice函数删除设备对象,并调用NdisDeregisterProtocol函数从NDIS中取消注册,并释放各相关资源。

NPF中的NPF_Unload的具体实现如下:packetNtx\\driver\\packet.c 620~670 VOID NPF_Unload(IN PDRIVER_OBJECT DriverObject) {

PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT OldDeviceObject; PDEVICE_EXTENSION DeviceExtension; NDIS_STATUS Status; NDIS_STRING SymLink;

DeviceObject = DriverObject->DeviceObject;

/*遍历设备对象,释放资源*/ while (DeviceObject != NULL) { OldDeviceObject = DeviceObject; DeviceObject = DeviceObject->NextDevice;

DeviceExtension = OldDeviceObject->DeviceExtension;

if (DeviceExtension->ExportString) {

RtlInitUnicodeString(&SymLink, DeviceExtension->ExportString);

//删除符号连接,并释放相关资源 IoDeleteSymbolicLink(&SymLink);

ExFreePool(DeviceExtension->ExportString); }

//删除设备对象

IoDeleteDevice(OldDeviceObject); }

//从NDIS中取消注册

NdisDeregisterProtocol(&Status,g_NdisProtocolHandle);

// 释放储存适配器名称的内存 ExFreePool( bindP ); }

其中IoDeleteSymbolicLink、IoDeleteDevice与NdisDeregisterProtocol系统接口函数的说明分别如下:

函数IoDeleteSymbolicLink从系统中删除一个符号连接。 NTSTATUS

IoDeleteSymbolicLink(

IN PUNICODE_STRING SymbolicLinkName );

输入参数SymbolicLinkName指向一个Unicode字符串,该字符串是用户可见的符号连接。 如果符号连接删除成功函数返回STATUS_SUCCESS。

函数IoDeleteDevice从系统中删除一个设备对象 ,例如,当一个底层的设备从系统中被删除时。 VOID

IoDeleteDevice(

IN PDEVICE_OBJECT DeviceObject );

输入参数DeviceObject 指向被删除的设备对象。

函数NdisDeregisterProtocol释放驱动程序调用NdisRegisterProtocol函数所分配的资源。 VOID

NdisDeregisterProtocol( OUT PNDIS_STATUS Status,

IN NDIS_HANDLE NdisProtocolHandle );

输出参数Status 指向调用者提供的一个变量,函数返回时被设置为

NDIS_STATUS_SUCCESS。输入参数NdisProtocolHandle指定驱动程序初始化时调用 NdisRegisterProtocol所返回的句柄。


WinPcap驱动程序的初始化与清除(六)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教育顾问呼出、学科分析、家庭教育话术-已印

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: