次の方法で共有


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 回限りの初期化は既に完了しています。 初期化されたデータは、 Context が指すメモリ位置に格納されます。
STATUS_PENDING
呼び出し元が 1 回限りの初期化を正常に開始しました。 呼び出し元はドライバー固有の初期化手順を実行し、 RtlRunOnceComplete を 呼び出して初期化を完了します。

注釈

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

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows で使用できます。
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

RTL_RUN_ONCE

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization