RtlRunOnceExecuteOnce 函数 (ntddk.h)

RtlRunOnceExecuteOnce 执行一次性初始化。

语法

NTSYSAPI NTSTATUS RtlRunOnceExecuteOnce(
  PRTL_RUN_ONCE         RunOnce,
  PRTL_RUN_ONCE_INIT_FN InitFn,
  PVOID                 Parameter,
  PVOID                 *Context
);

参数

[in, out] RunOnce

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

[in] InitFn

指向 RunOnceInitialization 例程的指针。

[in, out] Parameter

要作为 Parameter 参数传递给 RunOnceInitialization 例程的值。

[out] Context

指向接收初始化数据的 PVOID 变量的指针。

返回值

如果操作成功,RtlRunOnceExecuteOnce 将返回STATUS_SUCCESS;如果操作失败,则返回相应的 NTSTATUS 错误代码。

注解

对于特定RTL_RUN_ONCE结构对 RtlRunOnceExecuteOnce 的第一次调用,RtlRunOnceExecuteOnce 调用 RunOnceInitialization 例程来初始化数据。 针对该结构的每次后续调用 RtlRunOnceExecuteOnce 都会提供相同的初始化数据。 对于同一RTL_RUN_ONCE结构,不会调用 RunOnceInitialization 例程两次。

RtlRunOnceExecuteOnce 在禁用正常内核 APC 的情况下运行。 除非所有调用都发生在APC_LEVEL,否则不应在特殊内核 APC 中调用例程。

要求

要求
最低受支持的客户端 从 Windows Vista 开始可用。
目标平台 通用
标头 ntddk.h (包括 Ntddk.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL (请参阅备注部分。)

另请参阅

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceInitialize

RunOnceInitialization