次の方法で共有


RtlRunOnceComplete 関数 (ntddk.h)

RtlRunOnceComplete ルーチンは、RtlRunOnceBeginInitialize によって開始された 1 回限りの初期化を完了します。

構文

NTSYSAPI NTSTATUS RtlRunOnceComplete(
  [in, out]      PRTL_RUN_ONCE RunOnce,
  [in]           ULONG         Flags,
  [in, optional] PVOID         Context
);

パラメーター

[in, out] RunOnce

RTL_RUN_ONCE 1 回限 りの 初期化構造体へのポインター。

[in] Flags

ドライバーは、必要に応じて、次のフラグの 1 つ以上を指定できます。

RTL_RUN_ONCE_ASYNC

非同期モードで動作します。 このモードでは、複数の完了試行を並列で実行できます。 このフラグを使用すると、このフラグも指定されていない限り、 RtlRunOnceComplete ルーチンの後続の呼び出しは失敗します。

RTL_RUN_ONCE_INIT_FAILED

初期化の試行に失敗しました。

[in, optional] Context

初期化されたデータを指定します。

戻り値

RtlRunOnceComplete は、次のいずれかの NTSTATUS 値を返します。

リターン コード 説明
STATUS_SUCCESS
操作は正常に完了しました。
STATUS_UNSUCCESSFUL
操作を完了できませんでした。 呼び出し元が Flags パラメーターにRTL_RUN_ONCE_ASYNC指定した場合、この値は、別のスレッドが初期化を完了したことを示すことができます。

注釈

RtlRunOnceComplete がSTATUS_SUCCESSを返す場合、同じRTL_RUN_ONCE構造体に対する RtlRunOnceBeginInitialize の後続の呼び出しでは、初期化されたデータとして Context が提供されます。

呼び出し元が Flags パラメーターにRTL_RUN_ONCE_ASYNC指定し、RtlRunOnceComplete がSTATUS_SUCCESS以外の値を返す場合、呼び出し元は、試行した初期化をクリーンする必要があります。

要件

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

こちらもご覧ください

RTL_RUN_ONCE

RtlRunOnceBeginInitialize

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization