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 值之一:

返回代码 描述
STATUS_SUCCESS
作已成功完成。
STATUS_UNSUCCESSFUL
无法完成该作。 如果在 标志 参数中指定的调用方指定RTL_RUN_ONCE_ASYNC,则此值可以指示另一个线程已完成初始化。

言论

如果 RtlRunOnceComplete 返回STATUS_SUCCESS,则 RTL_RUN_ONCERtlRunOnceBeginInitialize 的任何后续调用都提供 上下文 作为初始化数据。

如果在 Flags 参数中指定的调用方指定RTL_RUN_ONCE_ASYNC,并且 RtlRunOnceComplete 返回除STATUS_SUCCESS以外的任何值,则调用方必须清理尝试的任何初始化。

要求

要求 价值
最低支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization