文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>深度剖析WinPcap之(八)——打开与关..

深度剖析WinPcap之(八)——打开与关..

时间:2010-09-05  来源:runhook

1.6.3.1     NPF_OpenAdapterComplete函数

该函数结束一个适配器的打开,是NDIS函数NdisOpenAdapter所关联的回调函数。当NIC驱动程序完成一个打开操作(在NPF_Open中调用NdisOpenAdapter启动打开操作)后被NDIS调用。函数原型如下:
VOID
NPF_OpenAdapterComplete(
        IN NDIS_HANDLE  ProtocolBindingContext,
        IN NDIS_STATUS  Status,
        IN NDIS_STATUS  OpenErrorStatus
);
参数ProtocolBindingContext为函数的上下文,包含一个指向与当前实例关联的OPEN_INSTANCE结构体指针。参数Status为NDIS执行打开操作的状态。参数OpenErrorStatus没有被NPF使用。
函数的主要代码如下:
VOID NPF_OpenAdapterComplete(
    IN NDIS_HANDLE  ProtocolBindingContext,
    IN NDIS_STATUS  Status,
    IN NDIS_STATUS  OpenErrorStatus)
{
    POPEN_INSTANCE      Open;
    PLIST_ENTRY     RequestListEntry;
    PINTERNAL_REQUEST   MaxSizeReq;
    NDIS_STATUS     ReqStatus;
   
/*获得Open实例*/
    Open = (POPEN_INSTANCE)ProtocolBindingContext;
    ASSERT(Open != NULL);
 
    if (Status != NDIS_STATUS_SUCCESS)
    {  
        //打开操作没有正确完成,我们把一个NDIS_STATUS装换为NTSTATU。
        Open->OpenCloseStatus = Status;
    }
    else
    {   //打开成功
        Open->OpenCloseStatus = STATUS_SUCCESS;
    }
 
    //唤醒NdisOpenAdapter的调用着,就是NPF_Open。
    NdisSetEvent(&Open->NdisOpenCloseCompleteEvent);
}
函数检测适配器的打开是否成功,正确设置Open->OpenCloseStatus,如果打开成功,则唤醒NPF_Open函数完成NdisWaitEvent(&Open->NdisOpenCloseCompleteEvent, 0);语句,继续执行。
排行榜 更多 +
哥布林弹球b服手游下载

哥布林弹球b服手游下载

休闲益智 下载
小马样式盒游戏下载

小马样式盒游戏下载

休闲益智 下载
异变小镇中文版下载安装

异变小镇中文版下载安装

冒险解谜 下载