Win32 API 日本語リファレンス
ホーム › Networking.WinSock › LPWSPENUMNETWORKEVENTS

LPWSPENUMNETWORKEVENTS

コールバック

シグネチャ

INT LPWSPENUMNETWORKEVENTS(
    SOCKET s,
    HANDLE hEventObject,
    WSANETWORKEVENTS* lpNetworkEvents,
    INT* lpErrno
);

パラメーター

フィールド型説明
sSOCKETソケットを識別するデスクリプター。
hEventObjectHANDLEリセットする、関連付けられたイベントオブジェクトを識別する省略可能なハンドル。
lpNetworkEventsWSANETWORKEVENTS*発生したネットワークイベントの記録と、それに関連するエラーコードが格納される WSANETWORKEVENTS 構造体へのポインター。WSANETWORKEVENTS 構造体は、以下の本文で定義されています。
lpErrnoINT*エラーコードへのポインター。

公式ドキュメント

LPWSPEnumNetworkEvents 関数は、指定されたソケットで発生したネットワークイベントを報告します。

戻り値

操作が成功した場合、戻り値は 0 です。それ以外の場合は SOCKET_ERROR が返され、固有のエラー番号が lpErrno に格納されます。

エラーコード 意味
WSAENETDOWN
ネットワークサブシステムに障害が発生しました。
WSAEINVAL
指定されたパラメーターのいずれかが無効であったことを示します。
WSAEINPROGRESS
ブロッキング Windows Sockets 呼び出しが進行中であるか、サービスプロバイダーがコールバック関数をまだ処理中です。
WSAENOTSOCK
デスクリプターがソケットではありません。

解説(Remarks)

この関数は、前回この関数を呼び出して以降に、指定されたソケットで発生したネットワークイベントを報告するために使用します。この関数は、1 つ以上のネットワークイベントにイベントオブジェクトを関連付ける LPWSPEventSelect および LPWSPAsyncSelect と組み合わせて使用することを想定しています。ネットワークイベントの記録は、LPWSPEventSelect または LPWSPAsyncSelect が 0 以外の lNetworkEvents 引数で呼び出された時点で開始され、lNetworkEvents 引数を 0 に設定した対応する LPWSPEventSelect または LPWSPAsyncSelect の呼び出しが行われるまで有効なままです。

LPWSPEnumNetworkEvents が報告するのは、LPWSPEventSelect で指定されたネットワークアクティビティとエラーのみです。LPWSPSelect および LPWSPAsyncSelect の説明を参照して、これらの関数がネットワークアクティビティとエラーをどのように報告するかを確認してください。

ソケットの内部のネットワークイベント記録が lpNetworkEvents で参照される構造体にコピーされ、その後、内部のネットワークイベント記録はクリアされます。hEventObject が NULL 以外の場合は、指定されたイベントオブジェクトもリセットされます。Windows Sockets プロバイダーは、ネットワークイベント記録のコピー、そのクリア、および関連するイベントオブジェクトのリセットという各操作がアトミックに行われることを保証します。そのため、指定されたネットワークイベントが次に発生した時点で、イベントオブジェクトはシグナル状態になります。この関数が SOCKET_ERROR を返した場合、関連するイベントオブジェクトはリセットされず、ネットワークイベントの記録もクリアされません。

WSANETWORKEVENTS 構造体は、WSANETWORKEVENTS のリファレンスページで定義されています。

WSANETWORKEVENTS 構造体の lNetworkEvents メンバーは、FD_XXX ネットワークイベントのうちどれが発生したかを示します。iErrorCode 配列は、関連するエラーコードを格納するために使用され、配列のインデックスは lNetworkEvents 内のイベントビットの位置に対応します。iErrorCode 配列のインデックス指定には、FD_READ_BIT や FD_WRITE_BIT などの識別子を使用できます。

iErrorCode 配列のうち、lNetworkEvents メンバーで設定されたビットに対応する要素のみが設定される点に注意してください。それ以外のメンバーは変更されません (これは、新しい FD_ROUTING_INTERFACE_CHANGE イベントおよび FD_ADDRESS_LIST_CHANGE イベントを認識しない Windows Socket 2 SPI クライアントとの下位互換性のために重要です)。

それぞれのネットワークイベントとともに、次のエラーコードが返される場合があります。

イベント: FD_CONNECT

エラーコード 意味
WSAEAFNOSUPPORT
指定されたファミリのアドレスは、このソケットでは使用できません。
WSAECONNREFUSED
接続の試行が強制的に拒否されました。
WSAENETUNREACH
現時点では、このホストからネットワークに到達できません。
WSAENOBUFS
使用可能なバッファー領域がありません。ソケットを接続できません。
WSAETIMEDOUT
接続を確立しないまま、接続の試行がタイムアウトしました。

イベント: FD_CLOSE

エラーコード 意味
WSAENETDOWN
ネットワークサブシステムに障害が発生しました。
WSAECONNRESET
接続がリモート側によってリセットされました。
WSAECONNABORTED
タイムアウトまたはその他の障害により、接続が終了しました。

イベント: FD_READ, FD_WRITE, FD_OOB, FD_ACCEPT, FD_QOS, FD_GROUP_QOS, FD_ADDRESS_LIST_CHANGE

エラーコード 意味
WSAENETDOWN
ネットワークサブシステムに障害が発生しました。

イベント: FD_ROUTING_INTERFACE_CHANGE

エラーコード 意味
WSAENETUNREACH
指定された宛先には到達できなくなりました。
WSAENETDOWN
ネットワークサブシステムに障害が発生しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)