RtlRunOnceBeginInitialize 関数 (ntddk.h)
RtlRunOnceBeginInitialize ルーチンは、1 回限りの初期化を開始します。
構文
NTSYSAPI NTSTATUS RtlRunOnceBeginInitialize(
[in, out] PRTL_RUN_ONCE RunOnce,
[in] ULONG Flags,
[out] PVOID *Context
);
パラメーター
[in, out] RunOnce
RTL_RUN_ONCE 1 回限りの初期化構造体へのポインター。
[in] Flags
ドライバーは、必要に応じて、次のフラグの 1 つ以上を指定できます。
RTL_RUN_ONCE_ASYNC
初期化を非同期的に実行します。 ドライバーは、複数の完了試行を並列で実行できます。 このフラグを使用すると、このフラグも指定されていない限り、このルーチンの後続の呼び出しは失敗します。
RTL_RUN_ONCE_CHECK_ONLY
初期化は開始しませんが、初期化が既に発生しているかどうかを判断するためにチェック。 RtlRunOnceBeginInitialize がSTATUS_SUCCESSを返した場合、初期化は成功し、*Context には初期化されたデータが含まれます。
[out] Context
初期化されたデータを受け取る PVOID 変数へのポインターを指定します。 *Context の値は、ルーチンがSTATUS_SUCCESSを返す場合にのみ有効です。
戻り値
RtlRunOnceBeginInitialize は、次のいずれかの NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
|
1 回限りの初期化は既に完了しています。 初期化されたデータは、 Context が指すメモリ位置に格納されます。 |
|
呼び出し元が 1 回限りの初期化を正常に開始しました。 呼び出し元はドライバー固有の初期化手順を実行し、 RtlRunOnceComplete を 呼び出して初期化を完了します。 |
注釈
ドライバーは、 RtlRunOnceExecuteOnce を 呼び出し、 RunOnceInitialization ルーチンを指定することで、1 回限りの初期化を実行することもできます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Ntddk.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |