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