GetQueuedCompletionStatus 関数 (ioapiset.h)
指定した I/O 完了ポートから I/O 完了パケットのデキューを試みます。 キューに登録された完了パケットがない場合、関数は完了ポートに関連付けられている保留中の I/O 操作が完了するまで待機します。
複数の I/O 完了パケットを一度にデキューするには、GetQueuedCompletionStatusEx 関数を使用します。
構文
BOOL GetQueuedCompletionStatus(
[in] HANDLE CompletionPort,
LPDWORD lpNumberOfBytesTransferred,
[out] PULONG_PTR lpCompletionKey,
[out] LPOVERLAPPED *lpOverlapped,
[in] DWORD dwMilliseconds
);
パラメーター
[in] CompletionPort
完了ポートへのハンドル。 完了ポートを作成するには、CreateIoCompletionPort 関数を使用します。
lpNumberOfBytesTransferred
完了した I/O 操作で転送されたバイト数を受け取る変数へのポインター。
[out] lpCompletionKey
I/O 操作が完了したファイル ハンドルに関連付けられている完了キー値を受け取る変数へのポインター。 完了キーは、CreateIoCompletionPortの呼び出しで指定
[out] lpOverlapped
完了した I/O 操作の開始時に指定された、OVERLAPPED 構造体のアドレスを受け取る変数へのポインター。
完了ポートと有効な OVERLAPPED 構造体に関連付けられたファイル ハンドルを関数に渡した場合でも、アプリケーションは完了ポート通知を防ぐことができます。 これを行うには、OVERLAPPED 構造体の hEvent メンバーの有効なイベント ハンドルを指定し、その下位ビットを設定します。 下位ビットが設定されている有効なイベント ハンドルを使用すると、重複した I/O が完了パケットを完了ポートにエンキューできなくなります。
[in] dwMilliseconds
完了ポートに完了パケットが表示されるまで呼び出し元が待機するミリ秒数。 指定した時間内に完了パケットが表示されない場合、関数はタイムアウトし、FALSE
dwMilliseconds
Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、および Windows Server 2008 R2:dwMilliseconds 値には、低電力状態で費やされた時間が含まれます。 たとえば、コンピューターがスリープ状態の間、タイムアウトはカウントダウンを続けます。
Windows 8 以降、Windows Server 2012 以降:dwMilliseconds 値には、低電力状態で費やされた時間は含まれません。 たとえば、コンピューターがスリープ状態の間、タイムアウトのカウントダウンは続行されません。
戻り値
成功した場合は 0 以外の値 (
拡張エラー情報を取得するには、GetLastError
詳細については、「解説」セクションを参照してください。
備考
この関数は、指定された完了ポートにスレッドを関連付けます。 スレッドは、最大 1 つの完了ポートに関連付けることができます。
呼び出しが未処理の間に関連付けられている完了ポート ハンドルが閉じられているために、GetQueuedCompletionStatus
Windows Server 2003 および Windows XP: 通話が未処理の間に完了ポート ハンドルを閉じると、以前に指定した動作は発生しません。 この関数は、ポートからエントリが削除されるまで、またはタイムアウトが発生するまで待機し続けます (INFINITE以外の値として指定されている場合)。
- *
lpOverlapped が NULL場合、関数は完了ポートから完了パケットをデキューしませんでした。 この場合、この関数は、lpNumberOfBytes および lpCompletionKey パラメーターが指す変数に情報を格納せず、その値は不確定です。 - *
lpOverlapped が NULLされていない場合、関数は失敗した I/O 操作の完了パケットを完了ポートからデキューします。この関数は、失敗した操作に関する情報を、lpNumberOfBytes、lpCompletionKey 、lpOverlapped 指す変数に格納します。 拡張エラー情報を取得するには、GetLastError 呼び出します。
Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。
テクノロジー | サポート |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 透過的フェールオーバー (TFO) | はい |
SMB 3.0 とスケールアウト ファイル共有 (SO) | はい |
クラスター共有ボリューム ファイル システム (CsvFS) | はい |
回復性のあるファイル システム (ReFS) | はい |
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | ioapiset.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
ConnectNamedPipe の
DeviceIoControl の
Functions
GetQueuedCompletionStatusEx の
LockFileEx の
の概要に関するトピック
PostQueuedCompletionStatus を
ReadFile の
TransactNamedPipe の
Windows ヘッダー の使用の
WaitCommEvent の
WriteFile の