RtlRunOnceComplete 函数 (ntddk.h)
RtlRunOnceComplete 例程完成由 RtlRunOnceBeginInitialize开始的一次性初始化。
语法
NTSYSAPI NTSTATUS RtlRunOnceComplete(
[in, out] PRTL_RUN_ONCE RunOnce,
[in] ULONG Flags,
[in, optional] PVOID Context
);
参数
[in, out] RunOnce
指向 RTL_RUN_ONCE 一次性初始化结构的指针。
[in] Flags
驱动程序可以选择指定以下一个或多个标志:
RTL_RUN_ONCE_ASYNC
以异步模式运行。 此模式允许多次并行执行完成尝试。 如果使用此标志,则对 RtlRunOnceComplete 例程的后续调用将失败,除非还指定了此标志。
RTL_RUN_ONCE_INIT_FAILED
初始化尝试失败。
[in, optional] Context
指定初始化的数据。
返回值
RtlRunOnceComplete 返回以下 NTSTATUS 值之一:
返回代码 | 描述 |
---|---|
|
作已成功完成。 |
|
无法完成该作。 如果在 标志 参数中指定的调用方指定RTL_RUN_ONCE_ASYNC,则此值可以指示另一个线程已完成初始化。 |
言论
如果 RtlRunOnceComplete 返回STATUS_SUCCESS,则 RTL_RUN_ONCE 对 RtlRunOnceBeginInitialize 的任何后续调用都提供 上下文 作为初始化数据。
如果在 Flags 参数中指定的调用方指定RTL_RUN_ONCE_ASYNC,并且 RtlRunOnceComplete 返回除STATUS_SUCCESS以外的任何值,则调用方必须清理尝试的任何初始化。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 |
目标平台 | 普遍 |
标头 | ntddk.h (包括 Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |