深度剖析WinPcap之(六)——驱动程序的初始化与清除
2009-09-11 00:00:00 来源:WEB开发网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;
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接