同步 线程 事件
来源:互联网 发布:搜狗浏览器 mac 编辑:程序博客网 时间:2024/06/05 23:45
1. VOID KeInitializeEvent(IN PRKEVENT Event, IN EVENT_TYPE Type, IN BOOLEAN State);
Type : 事件类型,可以是 NotificationEvent 和 而SynchronizationEvent.
NotificationEvent
等待一个IO操作完成.当一个NotificationEvent事件用KeSetEvent设置成信号状态时,
所有等待在该事件上的线程都会开始执行,这是因为此类型事件不会自动清除信号,它
保留信号状态直到你手工用KeResetEvent 或 KeClearEvent 清除这个事件的信号状态.
SynchronizationEvent
等待一个IO操作完成.当一个NotificationEvent事件用KeSetEvent设置成信号状态时,
则只能让等待在该事件上的单个线程开始执行,其它会继续等待,这是因为此类型在执
行 KeWaitForMultipleObjects 或 KeWaitForSingleObject 之后会自动清除这个事件
的信号状态, 而不必手工用 KeResetEvent 或 KeClearEvent 清除这个事件的信号状
态.
State : 指明事件的信号初始化状态.
当是TRUE 时初始化事件是有信号状态.
当是FALSE时初始化事件是没信号状态.
2.
LONG KeSetEvent
(
IN PRKEVENT Event,
IN KPRIORITY Increment,
IN BOOLEAN Wait
);
设置事件为有信号状态.
3.
NTSTATUS KeWaitForMultipleObjects
(
IN ULONG Count,
IN PVOID Object[],
IN WAIT_TYPE WaitType,
IN KWAIT_REASON WaitReason,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL,
IN PKWAIT_BLOCK WaitBlockArray OPTIONAL
);
或
NTSTATUS KeWaitForSingleObject
(
IN PVOID Object,
IN KWAIT_REASON WaitReason,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
等待事件信号状态的发生.
4.
LONG KeResetEvent
(
IN PRKEVENT Event
);
复位一个指定事件到没有信号状态并返回以前这个事件的信号状态.
返回非零说明以前是有信号状态;
返回 零说明以前是无信号状态;
5.
VOID KeClearEvent
(
IN PRKEVENT Event
);
设置一个指定事件到没有信号状态.
说明:
KeResetEvent 和 KeClearEvent 都是设置一个指定事件到没有信号状态,
如果不想得到以前这个事件的信号状态的话用 KeClearEvent 更好.
6.
LONG KeReadStateEvent(
IN PRKEVENT Event
);
得到一个给定事件当前的信号状态.
返回非零说明是有信号状态;
返回 零说明是无信号状态;
Type : 事件类型,可以是 NotificationEvent 和 而SynchronizationEvent.
NotificationEvent
等待一个IO操作完成.当一个NotificationEvent事件用KeSetEvent设置成信号状态时,
所有等待在该事件上的线程都会开始执行,这是因为此类型事件不会自动清除信号,它
保留信号状态直到你手工用KeResetEvent 或 KeClearEvent 清除这个事件的信号状态.
SynchronizationEvent
等待一个IO操作完成.当一个NotificationEvent事件用KeSetEvent设置成信号状态时,
则只能让等待在该事件上的单个线程开始执行,其它会继续等待,这是因为此类型在执
行 KeWaitForMultipleObjects 或 KeWaitForSingleObject 之后会自动清除这个事件
的信号状态, 而不必手工用 KeResetEvent 或 KeClearEvent 清除这个事件的信号状
态.
State : 指明事件的信号初始化状态.
当是TRUE 时初始化事件是有信号状态.
当是FALSE时初始化事件是没信号状态.
2.
LONG KeSetEvent
(
IN PRKEVENT Event,
IN KPRIORITY Increment,
IN BOOLEAN Wait
);
设置事件为有信号状态.
3.
NTSTATUS KeWaitForMultipleObjects
(
IN ULONG Count,
IN PVOID Object[],
IN WAIT_TYPE WaitType,
IN KWAIT_REASON WaitReason,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL,
IN PKWAIT_BLOCK WaitBlockArray OPTIONAL
);
或
NTSTATUS KeWaitForSingleObject
(
IN PVOID Object,
IN KWAIT_REASON WaitReason,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout OPTIONAL
);
等待事件信号状态的发生.
4.
LONG KeResetEvent
(
IN PRKEVENT Event
);
复位一个指定事件到没有信号状态并返回以前这个事件的信号状态.
返回非零说明以前是有信号状态;
返回 零说明以前是无信号状态;
5.
VOID KeClearEvent
(
IN PRKEVENT Event
);
设置一个指定事件到没有信号状态.
说明:
KeResetEvent 和 KeClearEvent 都是设置一个指定事件到没有信号状态,
如果不想得到以前这个事件的信号状态的话用 KeClearEvent 更好.
6.
LONG KeReadStateEvent(
IN PRKEVENT Event
);
得到一个给定事件当前的信号状态.
返回非零说明是有信号状态;
返回 零说明是无信号状态;
- 线程同步之事件同步
- 同步 线程 事件
- 线程,事件,同步随笔
- 线程同步:事件对象
- 事件实现线程同步
- 使用事件同步线程
- 线程同步之事件
- 线程同步--事件Event
- 线程同步-事件对象(转)
- 利用事件实现线程同步
- 线程的同步(二)---事件
- 线程同步—事件对象
- 事件对象实现线程同步
- 线程同步之事件对象
- 基于事件的线程同步
- 线程同步--事件内核对象
- 基于事件的线程同步
- 【windows】线程同步 - 事件对象
- 我还有梦
- 函数......ObReferenceObjectByHandle
- 关于SQL Server的ISOLATION
- SSL + WS-Security = Web Service安全保障
- E文积累_20071210_Achilles heel
- 同步 线程 事件
- sos.exe 病毒与sos.exe专杀工具
- 重新过一遍ASP.NET 2.0(C#)(7) - Profile(存储用户配置)
- Error checking V.S. Exception
- (原创程序)志远信息管理系统 v1.0
- UML学习手记(四):用例分析之范围工具“内/外”列表
- 学习cweb
- 18位身份证号码最后一位校验码的计算方法
- 写给WEB2.0的站长