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
操作无法完成。 如果在 Flags 参数中RTL_RUN_ONCE_ASYNC指定的调用方,则此值可以指示另一个线程已完成初始化。

注解

如果 RtlRunOnceComplete 返回STATUS_SUCCESS,则针对同一RTL_RUN_ONCE结构对 RtlRunOnceBeginInitialize 的任何后续调用都提供与初始化数据相同的上下文

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

要求

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

另请参阅

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization