WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(六)——驱动程序的初始化与清除... 阅读

深度剖析WinPcap之(六)——驱动程序的初始化与清除

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 图5-2 System进程驱动加载的时候,系统进程启动新的线程,深度剖析WinPcap之(六)——驱动程序的初始化与清除(5),调用执行体组件中的对象管理器,创建一个驱动对象,它必须返回一个在ntstatus.h定义的错误状态码,下面列出STATUS_SUCCESS与 STATUS_UNSUCC

深度剖析WinPcap之(六)——驱动程序的初始化与清除 (1)

图5-2 System进程

驱动加载的时候,系统进程启动新的线程,调用执行体组件中的对象管理器,创建一个驱动对象。这个驱动对象是一个DRIVER_OBJECT的结构体。另外,系统进程调用执行体组件中的配置管理程序,查询此驱动程序在注册表中对应的项。

系统线程调用驱动程序的DriverEntry例程时,同时传进两个参数,分别是

pDrivelobject和pRegistryPath。其中,第一个是指向刚才被创建驱动对象的指针,第二个是指向设备服务键的键名称符串的指针。

为了和NDIS库建立通信,驱动程序的DriverEntry必须调用NdisRegisterProtocol作为协议驱动程序注册,稍候将作详细描述。

DriverEntry 返回值是NTSTATUS的数据,NTSTATUS被定义为32位的无符号长整型。在驱动程序开发中,人们习惯用NTSTATUS返回状态。 DriverEntry的返回值如果表示成功,则意味着加载驱动成功,否则意味着加载驱动失败,调用对象管理程序销毁驱动对象。如果该程序成功,它必须返回STATUS_SUCCESS,否则,它必须返回一个在ntstatus.h定义的错误状态码。下面列出STATUS_SUCCESS与 STATUS_UNSUCCESSFUL的定义。

#define  STATUS_SUCCESS             ((NTSTATUS)0x00000000L)
#define  STATUS_UNSUCCESSFUL        ((NTSTATUS)0xC0000001L)

1.2.1        协议驱动程序注册

驱动程序在DriverEntry环境中通过调用NdisRegisterProtocol向NDIS注册ProtocolXxx函数。NdisRegisterProtocol定义如下:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:深度 剖析 WinPcap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接