一、同步事件
对数据结构 KEVENT
进行初始化、等待和设置,实现多个线程之间的同步。例如,希望主线程 A 在等待线程 B 完成某事后才能做某事,可在主线程 A 中配置KEVENT事件
等待,在线程B中完成操作后,对正在等待的KEVENT事件
进行设置即可。
实例如下:
// 定义一个事件
KEVENT event;
// 事件初始化
KeInitializeEvent(&event, SynchronizationEvent, FALSE);
<!-- more -->
// ......
// 主线程A中:
// 在此处等待 KEVENT 事件。若该事件没有被设置,则会一直阻塞在这里继续等待。
KeWaitForSingleObject(&event, Executive, KernelMode, 0, 0);
// ......
// 线程B中:
// 在此处设置 KEVENT 事件。一旦设置了此事件,前面等待的地方将继续执行。
KeSetEvent(&e