Share via


InitOnceBeginInitialize 関数 (synchapi.h)

1 回限り初期化を開始します。

構文

BOOL InitOnceBeginInitialize(
  [in, out]       LPINIT_ONCE lpInitOnce,
  [in]            DWORD       dwFlags,
  [out]           PBOOL       fPending,
  [out, optional] LPVOID      *lpContext
);

パラメーター

[in, out] lpInitOnce

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

[in] dwFlags

このパラメーターの値は 0 にすることも、次のフラグを 1 つ以上指定することもできます。

意味
INIT_ONCE_ASYNC
0x00000002UL
複数の初期化試行を並列で実行できるようにします。 このフラグを使用すると、このフラグも指定されていない限り、この関数の後続の呼び出しは失敗します。
INIT_ONCE_CHECK_ONLY
0x00000001UL
この関数呼び出しは初期化を開始しません。 戻り値は、初期化が既に完了しているかどうかを示します。 関数が TRUE を返す場合、 lpContext パラメーターはデータを受け取ります。

[out] fPending

関数が成功した場合、このパラメーターは現在の初期化状態を示します。

このパラメーターが TRUE で、dwFlagsINIT_ONCE_CHECK_ONLYが含まれている場合、初期化は保留中であり、コンテキスト データは無効です。

このパラメーターが FALSE の場合、初期化は既に完了しており、呼び出し元は lpContext パラメーターからコンテキスト データを取得できます。

このパラメーターが TRUE で、dwFlagsINIT_ONCE_CHECK_ONLYが含まれていない場合、初期化が開始され、呼び出し元は初期化タスクを実行できます。

[out, optional] lpContext

成功した場合に 1 回限りの初期化構造で格納されたデータを受け取る省略可能なパラメーター。 データの下位 INIT_ONCE_CTX_RESERVED_BITS ビットは常に 0 です。

戻り値

INIT_ONCE_CHECK_ONLYが指定されておらず、関数が成功した場合、戻り値は TRUE になります

INIT_ONCE_CHECK_ONLYを指定し、初期化が完了した場合、戻り値は TRUE になります

それ以外の場合、戻り値は FALSE です

詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

この関数は、同期または非同期の 1 回限り初期化に使用できます。 非同期の 1 回限りの初期化には、 INIT_ONCE_ASYNC フラグを使用します。 同期的な 1 回限りの初期化中に実行するコールバック関数を指定するには、 InitOnceExecuteOnce 関数を参照してください。

この関数が成功した場合、スレッドは同期オブジェクトを作成し、InitOnceComplete 関数の lpContext パラメーターで を指定できます。

この関数を使用するアプリケーションをコンパイルするには、 _WIN32_WINNT を 0x0600 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。

1 回限りの初期化オブジェクトを移動またはコピーすることはできません。 プロセスは初期化オブジェクトを変更せず、代わりに論理的に不透明として扱う必要があります。 1 回限りの初期化関数のみを使用して、1 回限りの初期化オブジェクトを管理します。

この関数を使用する例については、「One-Time 初期化の使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー synchapi.h (Windows 7 の Windows.h、Windows Server 2008 Windows Server 2008 R2 を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

InitOnceComplete

InitOnceExecuteOnce

1 回限り初期化

同期関数