WaitForSingleObjectEx 関数 (synchapi.h)
指定したオブジェクトがシグナル状態になるまで待機し、I/O 完了ルーチンまたは非同期プロシージャ呼び出し (APC) がスレッドにキューに登録されるか、タイムアウト間隔が経過するまで待機します。
複数のオブジェクトを待機するには、WaitForMultipleObjectsExを使用します。
構文
DWORD WaitForSingleObjectEx(
[in] HANDLE hHandle,
[in] DWORD dwMilliseconds,
[in] BOOL bAlertable
);
パラメーター
[in] hHandle
オブジェクトのハンドル。 ハンドルを指定できるオブジェクトの種類の一覧については、次の「解説」セクションを参照してください。
待機がまだ保留中の間にこのハンドルを閉じると、関数の動作は未定義になります。
ハンドルには、SYNCHRONIZE アクセス権が必要です。 詳細については、「Standard Access Rights」を参照してください。
[in] dwMilliseconds
タイムアウト間隔 (ミリ秒単位)。 0 以外の値を指定した場合、関数は、オブジェクトが通知されるまで待機するか、I/O 完了ルーチンまたは APC がキューに登録されるか、または間隔が経過するまで待機します。 dwMilliseconds
Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、および Windows Server 2008 R2:dwMilliseconds 値には、低電力状態で費やされた時間が含まれます。 たとえば、コンピューターがスリープ状態の間、タイムアウトはカウントダウンし続けます。
Windows 8 以降、Windows Server 2012 以降:dwMilliseconds 値には、低電力状態で費やされた時間は含まれません。 たとえば、コンピューターがスリープ状態の間にタイムアウトがカウントダウンし続けないようにします。
[in] bAlertable
このパラメーターが TRUE
完了ルーチンは、
戻り値
関数が成功した場合、戻り値は関数が戻る原因となったイベントを示します。 次のいずれかの値を指定できます。
戻りコード/値 | 形容 |
---|---|
|
指定されたオブジェクトは、所有しているスレッドが終了する前にミューテックス オブジェクトを所有していたスレッドによって解放されなかったミューテックス オブジェクトです。 ミューテックス オブジェクトの所有権は呼び出し元のスレッドに付与され、ミューテックスは非署名に設定されます。
ミューテックスが永続的な状態情報を保護していた場合は、整合性を確認する必要があります。 |
|
スレッドにキューに入 (APC) の非同期プロシージャ呼び出し |
|
指定したオブジェクトの状態が通知されます。 |
|
タイムアウト間隔が経過し、オブジェクトの状態は非署名です。 |
|
関数が失敗しました。 拡張エラー情報を取得するには、GetLastError |
備考
WaitForSingleObjectEx 関数は、待機条件が満たされているかどうかを判断します。 条件が満たされていない場合、呼び出し元のスレッドは、待機条件の条件が満たされるかタイムアウト間隔が経過するまで待機状態に入ります。
この関数は、一部の種類の同期オブジェクトの状態を変更します。 変更は、シグナル状態によって関数が返される原因となったオブジェクトに対してのみ行われます。 たとえば、セマフォ オブジェクトの数は 1 ずつ減少します。
WaitForSingleObjectEx 関数は、次のオブジェクトを待機できます。
- 変更通知
- コンソール入力
- 出来事
- メモリ リソース通知
- ミューテックス
- 過程
- セマフォ
- 糸
- 待機可能タイマー
例
例については、「完了ルーチンを使用した名前付きパイプ サーバーの
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | synchapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 の Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |