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 |
---|---|
|
一次性初始化已完成。 初始化的數據會儲存在 Context 所指向的記憶體位置。 |
|
呼叫端已成功開始一次性初始化。 呼叫端現在會執行驅動程式特定的初始化步驟,然後呼叫 RtlRunOnceComplete 來完成初始化。 |
備註
驅動程式也可以呼叫 RtlRunOnceExecuteOnce 並提供 RunOnceInitialization 例程來執行一次性初始化。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 中使用。 |
目標平台 | Universal |
標頭 | ntddk.h (包含 Ntddk.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= APC_LEVEL |