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

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

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 1.1.5.3 用户模式的事件事件是一种典型的同步对象,用户模式下的事件和内核模式的事件对象紧密相连,深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(2)(3),在使用事件之前,需要对事件进行初始化,直到给定的事件为信号状态,或等待超时,使用CreateEvent函数,HA

1.1.5.3     用户模式的事件

事件是一种典型的同步对象。用户模式下的事件和内核模式的事件对象紧密相连。在使用事件之前,需要对事件进行初始化,使用CreateEvent函数。

HANDLE CreateEvent(
  LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性
  BOOL bManualReset,                       // 复位方式
  BOOL bInitialState,                      // 初始化状态
  LPCTSTR lpName                           // 对象名称
);

CreateEvent函数会使操作系统创建一个内核事件对象。CreateEvent返回的句柄值就代表了这个内核事件对象。应用程序无法获得这个内核事件对象的指针,而用一个句柄(一个32位的无符号整数)代表事件对象。一般情况下,CreateEvent的安全属性设置为NULL。它的第二个参数bManualReset,表示创建的事件是否是手动模式。如果是手动模式的事件,事件处于激发状态后,需要手动设置才能回到未激发状态。如果是自动模式,当事件处于激发状态后,遇到任意一个等待(如WaitForSingleObject),则自动变回未激发状态。

下面的代码为WinPcap中创建一个事件的实例:

HANDLE hEvent;
    hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

1.1.5.4 NDIS库提供的事件

NDIS库的事件用NDIS_EVENT数据结构表示。

使用事件前,首先对其初始化,可使用NdisInitializeEvent函数。

VOID NdisInitializeEvent(IN PNDIS_EVENT  Event);

把调用者置为等待状态,直到给定的事件为信号状态,或等待超时,可以使用 NdisWaitEvent函数。

上一页  1 2 3 4 5  下一页

Tags:深度 剖析 WinPcap

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