LPWSPRECVDISCONNECT コールバック関数 (ws2spi.h)

LPWSPRecvDisconnect 関数は、ソケットの受信を終了し、ソケットが接続指向の場合は切断データを取得します。

構文

LPWSPRECVDISCONNECT Lpwsprecvdisconnect;

int Lpwsprecvdisconnect(
  [in]  SOCKET s,
  [out] LPWSABUF lpInboundDisconnectData,
  [out] LPINT lpErrno
)
{...}

パラメーター

[in] s

ソケットを識別する記述子。

[out] lpInboundDisconnectData

切断データをコピーするバッファーへのポインター。

[out] lpErrno

エラー コードへのポインター。

戻り値

エラーが発生しない場合、 LPWSPRecvDisconnect は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 lpErrno で特定のエラー コードを使用できます。

エラー コード 意味
WSAENETDOWN
ネットワーク サブシステムが失敗しました。
WSAEFAULT
パラメーター lpInboundDisconnectData によって参照されるバッファーが小さすぎます。
WSAENOPROTOOPT
接続解除データは、指定されたプロトコル ファミリではサポートされていません。
WSAEINPROGRESS
Windows ソケット呼び出しのブロックが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。
WSAENOTCONN
ソケットが接続されていません (接続指向のソケットのみ)。
WSAENOTSOCK
記述子はソケットではありません。

解説

LPWSPRecvDisconnect は、接続指向ソケットで使用され、受信を無効にし、リモート パーティから受信切断データを取得します。

この関数が正常に発行されると、ソケットでの後続の受信は許可されません。 これは、下位プロトコルレイヤーには影響しません。 TCP の場合、TCP ウィンドウは変更されず、受信データはウィンドウが使い果たされるまで受け入れられます (ただし、確認されません)。 UDP の場合、受信データグラムは受け入れられ、キューに入れられます。 いずれの場合も、ICMP エラー パケットは生成されません。

受信切断データを正常に受信するには、Windows ソケット SPI クライアントが他のメカニズムを使用して、回線が閉じられたことを確認する必要があります。 たとえば、クライアントは、FD_CLOSE通知を受信するか、戻り値 0 を取得するか、LPWSPRecv から WSAEDISCON エラー コードを取得する必要があります。

LPWSPRecvDisconnect はソケットを閉じず、LPWSPCloseSocket が呼び出されるまでソケットにアタッチされているリソースは解放されないことに注意してください。

注意

LPWSPRecvDisconnect は、ソケットのSO_LINGER設定に関係なくブロックしません。 Windows ソケット SPI クライアントは、 LPWSPRecvDisconnectが実行された後にソケットを再利用できることに依存しないでください。 特に、Windows ソケット プロバイダーは、このようなソケットでの LPWSPConnect の使用をサポートする必要はありません。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header ws2spi.h

関連項目

LPWSPConnect

LPWSPSocket