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 變數指標。 *Context 的值只有在例程傳回STATUS_SUCCESS時才有效。

傳回值

RtlRunOnceBeginInitialize 會傳回下列其中一個 NTSTATUS 值:

傳回碼 Description
STATUS_SUCCESS
一次性初始化已完成。 初始化的數據會儲存在 Context 所指向的記憶體位置。
STATUS_PENDING
呼叫端已成功開始一次性初始化。 呼叫端現在會執行驅動程式特定的初始化步驟,然後呼叫 RtlRunOnceComplete 來完成初始化。

備註

驅動程式也可以呼叫 RtlRunOnceExecuteOnce 並提供 RunOnceInitialization 例程來執行一次性初始化。

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 中使用。
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

RTL_RUN_ONCE

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization