WSAGetOverlappedResult

WSAGetOverlappedResult 関数は、指定したソケットでのオーバーラップ操作の結果を取得する。

WSAGetOverlappedResult s, lpOverlapped, lpcbTransfer, fWait, lpdwFlags

s : [int] ソケットを識別するディスクリプタ。これは、オーバーラップ操作をサポートする Winsock 関数 (AcceptEx、ConnectEx、DisconnectEx、TransmitFile、TransmitPackets、WSARecvWSARecvFrom、LPFN_WSARECVMSG (WSARecvMsg)、WSASendWSASendMsgWSASendToWSAIoctl) のいずれかでオーバーラップ操作を開始した時に指定したのと同じソケットである。
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
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ws2_32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ws2_32_gen2.hs