WSAGetOverlappedResult 関数は、指定したソケットでのオーバーラップ操作の結果を取得する。
WSAGetOverlappedResult s, lpOverlapped, lpcbTransfer, fWait, lpdwFlags
s : [int] ソケットを識別するディスクリプタ。これは、オーバーラップ操作をサポートする Winsock 関数 (AcceptEx、ConnectEx、DisconnectEx、TransmitFile、TransmitPackets、WSARecv、WSARecvFrom、LPFN_WSARECVMSG (WSARecvMsg)、WSASend、WSASendMsg、WSASendTo、WSAIoctl) のいずれかでオーバーラップ操作を開始した時に指定したのと同じソケットである。 lpOverlapped : [var] オーバーラップ操作開始時に指定された WSAOVERLAPPED 構造体へのポインタ。このパラメータは NULL ポインタであってはならない。 lpcbTransfer : [var] 送信や受信、または WSAIoctl 関数によって実際に転送されたバイト数を受け取る 32 ビット変数へのポインタ。このパラメータは NULL ポインタであってはならない。 fWait : [int] 関数が保留中のオーバーラップ操作の完了を待つかを指定するフラグ。TRUE の場合、操作が完了するまで関数は戻らない。FALSE でかつ操作が保留中の場合、関数は FALSE を返し、WSAGetLastError 関数は WSA_IO_INCOMPLETE を返す。fWait パラメータを TRUE に設定できるのは、オーバーラップ操作がイベントベースの完了通知を選択している場合のみである。 lpdwFlags : [var] 完了ステータスを補う 1 つ以上のフラグを受け取る 32 ビット変数へのポインタ。オーバーラップ操作が WSARecv または WSARecvFrom で開始されていた場合、このパラメータには lpFlags パラメータの結果値が格納される。このパラメータは NULL ポインタであってはならない。
(プラグイン / モジュール : ws2_32.dll)
WSAGetOverlappedResult 関数は、指定したソケットでのオーバーラップ操作の結果を取得する。 [戻り値] WSAGetOverlappedResult が成功した場合、戻り値は TRUE である。これは、オーバーラップ操作が正常に完了し、lpcbTransfer が指す値が更新されたことを意味する。WSAGetOverlappedResult が FALSE を返した場合、オーバーラップ操作が完了していないか、エラー付きで完了したか、WSAGetOverlappedResult への 1 つ以上のパラメータのエラーによりオーバーラップ操作の完了ステータスを特定できなかったかのいずれかを意味する。失敗時は、lpcbTransfer が指す値は更新されない。失敗の原因 (WSAGetOverlappedResult 関数自身の原因か、関連付けられたオーバーラップ操作の原因か) を調べるには WSAGetLastError を使用する。 (以下省略) [備考] WSAGetOverlappedResult 関数は、s パラメータで指定したソケットに対する lpOverlapped パラメータで指定したオーバーラップ操作の結果を報告する。WSAGetOverlappedResult 関数には、オーバーラップ関数が呼ばれた時に指定したソケットディスクリプタと WSAOVERLAPPED 構造体を渡す。操作が保留中であることは、操作を開始した関数が FALSE を返し、WSAGetLastError 関数が WSA_IO_PENDING を返すことで示される。WSARecv のような I/O 操作が保留状態にある場合、操作を開始した関数は WSAOVERLAPPED 構造体の hEvent メンバを非シグナル状態にリセットする。その後、保留中の操作が完了するとシステムはイベントオブジェクトをシグナル状態に設定する。fWait パラメータが TRUE の場合、WSAGetOverlappedResult はイベントオブジェクトがシグナル状態になるのを待って、保留操作が完了したかを判断する。クライアントは、I/O 操作要求時にイベントベースの完了通知を選択している場合に限り、fWait パラメータを TRUE に設定してよい。別の通知方式を選んでいる場合、WSAOVERLAPPED 構造体の hEvent パラメータの用途が異なり、fWait を TRUE に設定すると結果は予測不能である。Windows Vista で WSAGetOverlappedResult 関数が lpOverlapped、lpcbTransfer、lpdwFlags のいずれかのパラメータを NULL ポインタとして呼び出されると、アクセス違反となる。Windows Server 2003 以前で WSAGetOverlappedResult 関数が同様に呼び出されると、WSAEFAULT エラーコードが返される。注 スレッド終了時にはすべての I/O がキャンセルされる。オーバーラップソケットでは、操作完了前にスレッドがクローズされると保留中の非同期操作が失敗することがある。詳しくは ExitThread を参照。Windows Phone 8: この関数は Windows Phone 8 以降の Windows Phone ストアアプリでサポートされる。Windows 8.1 および Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストアアプリでサポートされる。
| プラグイン / モジュール | ws2_32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の ws2_32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_ws2_32_gen2.hs |