次の方法で共有


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 値が返されます。

リターン コード 形容
STATUS_SUCCESS
1 回限りの初期化は既に完了しています。 初期化されたデータは、コンテキスト が指 メモリの場所に格納されます。
STATUS_PENDING
呼び出し元は、1 回限りの初期化を正常に開始しました。 呼び出し元は、ドライバー固有の初期化手順を実行し、RtlRunOnceComplete 呼び出して初期化を完了します。

備考

ドライバーは、RtlRunOnceExecuteOnce 呼び出し、RunOnceInitialization ルーチンを指定することで、1 回限りの初期化を実行することもできます。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム 万国
ヘッダー ntddk.h (Ntddk.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

RTL_RUN_ONCE

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization