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

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

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: VOID NdisRegisterProtocol(OUT PNDIS_STATUS Status,OUT PNDIS_HANDLE NdisProtocolHandler,IN NDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,IN U

VOID NdisRegisterProtocol(
OUT PNDIS_STATUS Status,
OUT PNDIS_HANDLE NdisProtocolHandler,
IN NDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,
IN UINT CharacteristicsLength
);

参数Status是指向调用者提供的一个变量的指针,该函数可以返回下列的值:

NDIS_STATUS_SUCCESS

NDIS库把调用者注册为一个协议驱动程序

NDIS_STATUS_BAD_CHARACTERISTICS

对参数ProtocolCharacteristics 中MajorNdisVersion所描述的版本而言CharacteristicsLength太短

NDIS_STATUS_BAD_VERSION

参数ProtocolCharacteristics 中MajorNdisVersion描述的版本不可用

NDIS_STATUS_RESOURCES

资源不够,可能是内存,阻止NDIS库注册调用者

参数NdisProtocolHandle 指向调用者提供的一个变量,函数将通过它返回一个描述已注册驱动的一个句柄。参数ProtocolCharacteristics指向一个 NDIS_PROTOCOL_CHARACTERISTICS结构体,由调用者设置。参数CharacteristicsLength描述 ProtocolCharacteristics所指结构体的大小。

该调用的返回句柄NdisProtocolHandler对协议驱动程序是透明的,协议驱动程序必须保存该句柄,并在将来对NDIS的调用中作为输入参数传递,例如,打开低层适配器(调用NdisOpenAdapter函数时)。

在调用NdisRegisterProtocol之前,DriverEntry必须完成以下操作:

Ø         对NDIS_PROTOCOL_CHARACTERISTICS结构体进行零初始化,例如调用NdisZeroMemory函数。这将确保可选入口点的尚未使用的成员设置为NULL。如果该结构没被置零,那么在调用NdisRegisterProtocol之前,任何不使用的成员必须置为NULL;

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

Tags:深度 剖析 WinPcap

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