RtlRunOnceBeginInitialize 函数 (ntddk.h)

RtlRunOnceBeginInitialize 例程开始一次性初始化。

语法

NTSYSAPI NTSTATUS RtlRunOnceBeginInitialize(
  [in, out] PRTL_RUN_ONCE RunOnce,
  [in]      ULONG         Flags,
  [out]     PVOID         *Context
);

参数

[in, out] RunOnce

指向 RTL_RUN_ONCE 一次性初始化结构的指针。

[in] Flags

驱动程序可以选择指定以下一个或多个标志:

RTL_RUN_ONCE_ASYNC

异步执行初始化。 驱动程序可以并行执行多次完成尝试。 如果使用此标志,则对此例程的后续调用将失败,除非还指定了此标志。

RTL_RUN_ONCE_CHECK_ONLY

不要开始初始化,但检查以确定初始化是否已发生。 如果 RtlRunOnceBeginInitialize 返回STATUS_SUCCESS,则初始化成功,并且 *Context 包含初始化的数据。

[out] Context

指定指向接收初始化数据的 PVOID 变量的指针。 仅当例程返回STATUS_SUCCESS时,*Context 的值才有效。

返回值

RtlRunOnceBeginInitialize 返回以下 NTSTATUS 值之一:

返回代码 说明
STATUS_SUCCESS
一次性初始化已完成。 初始化的数据存储在 Context 指向的内存位置中。
STATUS_PENDING
调用方已成功开始一次性初始化。 调用方现在执行特定于驱动程序的初始化步骤,然后调用 RtlRunOnceComplete 以完成初始化。

注解

驱动程序也可以通过调用 RtlRunOnceExecuteOnce 并提供 RunOnceInitialization 例程来执行一次性初始化。

要求

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

另请参阅

RTL_RUN_ONCE

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization