WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(三)——所涉及的Windows驱动基... 阅读

深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(2)

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: BOOLEAN NdisWaitEvent(IN PNDIS_EVENT Event,IN UINT MsToWait); 把一个给定的事件设为信号状态 ,可使用NdisSetEvent函数,深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(2)(4),VOID NdisSe

BOOLEAN NdisWaitEvent(IN PNDIS_EVENT  Event,IN UINT  MsToWait);

把一个给定的事件设为信号状态 ,可使用NdisSetEvent函数,

VOID NdisSetEvent(IN PNDIS_EVENT  Event);

清除一个给定的事件的信号状态,可使用NdisResetEvent函数,

VOID NdisResetEvent(IN PNDIS_EVENT  Event);

下面的代码为WinPcap中使用NDIS库事件的实例:

NDIS_EVENT         NdisWriteCompleteEvent;
 
NTSTATUS NPF_Open(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{

NdisInitializeEvent(&Open->NdisWriteCompleteEvent);

}
 
NTSTATUS NPF_Write(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp)
{

NdisResetEvent(&Open->NdisWriteCompleteEvent);

NdisWaitEvent(&Open->NdisWriteCompleteEvent, 0);
    …
}
VOID NPF_SendComplete(IN NDIS_HANDLE   ProtocolBindingContext,
                   IN PNDIS_PACKET  pPacket,IN NDIS_STATUS   Status)
                 
{

    NdisSetEvent(&Open->NdisWriteCompleteEvent);

}

1.1.5.5     用户模式的互斥体

互斥体也是一种常用的同步对象。互斥体可以避免多个线程争夺同一个资源。例如,多线程环境中,只能有一个线程占有互斥体。获得互斥体的线程如果不释放互斥体,其他线程永远不会获得这个互斥体。互斥体的概念类似于同步事件,所不同的是同一个线程可以递归获得互斥体。递归获得互斥体的意思是,得到互斥体的线程还可以再次获得这个互斥体,或者说互斥体对于已经获得互斥体的线程不产生“互斥”关系。而同步事件不能递归获取。

上一页  1 2 3 4 5  下一页

Tags:深度 剖析 WinPcap

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