Windows ソケットのエラー コード、値、および意味


概要



この資料では、WSAGetLastError (Wsapiref_2tiq.asp) 関数によって返されるエラー コードについて説明します。エラーは、エラー マクロ名のアルファベット順に表示されています。Winsock2.h で定義されているエラー コードの中には、関数によって返されないものもあります。このようなエラー コードは、この資料には記載されていません。

詳細


WSAEINTR (10004)

  • 意味 : 関数呼び出しに割り込みがありました。
  • 説明 : ブロック操作は WSACancelBlockingCall (Wsapiref_704y.asp) の呼び出しによって中断されました。

WSAEACCES (10013)

  • 意味 : アクセスは拒否されました。
  • 説明 : アクセス許可で禁じられた方法でソケットにアクセスしようとしました。たとえば、ブロードキャスト アドレスが sendto で使用されているが、setsockopt(SO_BROADCAST) を使用してブロードキャスト アクセス許可が設定されていない場合に、このエラーが発生します。WSAEACCES エラーは、(Microsoft Windows NT 4.0 Service Pack 4 (SP4) 以降のバージョンで) bind (Wsapiref_6vzm.asp) 関数が呼び出されているときに、別のプログラム、サービス、またはカーネル モード ドライバが、同じアドレスを独占的なアクセスでバインドした場合にも発生する可能性があります。この独占的なアクセスは、Windows NT 4.0 SP4 以降のバージョンの新機能で、SO_EXCLUSIVEADDRUSE オプションを使用することにより実装されています。

WSAEFAULT (10014)

  • 意味 : アドレスが正しくありません。
  • 説明 : 呼び出しのポインタ引数を使用したときに、無効なポインタ アドレスを検出しました。プログラムから無効なポインタ値が渡された場合、またはバッファ長が短すぎる場合に、このエラーが発生します。たとえば、SOCKADDR 構造体である引数の長さが sizeof(SOCKADDR) の値よりも小さい場合に、この問題が発生します。

WSAEINVAL (10022)

  • 意味 : 無効な引数です。
  • 説明 : setsockopt (Wsapiref_94aa.asp) 関数に、無効な引数 (たとえば、無効なレベルを指定した引数) が指定されました。これはソケットの現在の状態 (たとえば、リッスン状態にないソケットでの accept (Wsapiref_13aq.asp) 呼び出し) を表していることもあります。

WSAEMFILE (10024)

  • 意味 : 開いているファイルが多すぎます。
  • 説明 : 開いているソケットが多すぎます。実装ごとに、利用可能なソケット ハンドルの最大数が制限されている可能性があります。これらのハンドルは、グローバル、プロセス単位、またはスレッド単位で利用可能な場合があります。

WSAEWOULDBLOCK (10035)

  • 意味 : リソースが一時的に利用できなくなっています。
  • 説明 : ソケットから読み取るデータがキューに入っていない場合に、すぐに完了できない非ブロックのソケットに対して操作 (recv (Wsapiref_2i9e.asp) など) を行うと、このエラーが返されます。これは致命的なエラーではなく、その操作は後で再試行できます。接続の確立には時間がかかるため、非ブロックの SOCK_STREAM ソケットに対する connect (Wsapiref_8m7m.asp) 呼び出しの結果として WSAEWOULDBLOCK が返されることがよくあります。

WSAEINPROGRESS (10036)

  • 意味 : 操作は現在実行中です。
  • 説明 : ブロック操作を実行中です。Windows ソケットで実行できるのは、完了していない各タスクまたは各スレッドに対する単一のブロック操作のみです。他の関数呼び出しが行われると (そのソケットを参照するか、他のソケットを参照するかに関係なく)、その関数は WSAEINPROGRESS エラーで失敗します。

WSAEALREADY (10037)

  • 意味 : 操作は既に実行中です。
  • 説明 : 既に操作が実行中の場合、非ブロック ソケットに対して操作が試行されます。たとえば、connect (Wsapiref_8m7m.asp) 呼び出しは、再度、既に接続されている非ブロック ソケットに対して試行されるか、既に取り消し済みまたは完了済みの非同期要求 (WSAAsyncGetXbyY) に対して試行されます。

WSAENOTSOCK (10038)

  • 意味 : 非ソケットに対してソケット操作を試みました。
  • 説明 : ソケット以外に対して操作が試行されました。ソケット ハンドル パラメータの参照先のソケットが有効ではないか、fd_set のメンバが有効ではありません (select (Wsapiref_1ab6.asp) の場合)。

WSAEDESTADDRREQ (10039)

  • 意味 : 送信先のアドレスが必要です。
  • 説明 : ソケット操作から必要なアドレスが省略されました。たとえば、sendto (Wsapiref_4sqa.asp) が ADDR_ANY のリモート アドレスで呼び出された場合に、このエラーが返されます。

WSAEMSGSIZE (10040)

  • 意味 : メッセージが長すぎます。
  • 説明 : データグラム ソケットで送信されるメッセージが、内部メッセージ バッファまたは他の一部のネットワークの制限を超えているか、データグラム自体よりも小さいバッファが、データグラムの受信に使用されています。

WSAEPROTOTYPE (10041)

  • 意味 : プロトコルの種類がソケットに対して正しくありません。
  • 説明 : socket (Wsapiref_2qr6.asp) 関数呼び出しで指定されているプロトコルが、要求されたソケットの種類の形式をサポートしていません。たとえば、ARPA インターネット UDP プロトコルは、SOCK_STREAM のソケットの種類では指定できません。

WSAENOPROTOOPT (10042)

  • 意味 : プロトコルのオプションが正しくありません。
  • 説明 : 不明か、無効か、あるいはサポートされていないオプションまたはレベルが、getsockopt (Wsapiref_8qcy.asp) 呼び出しまたは setsockopt (Wsapiref_94aa.asp) 呼び出しで指定されました。

WSAEPROTONOSUPPORT (10043)

  • 意味 : プロトコルがサポートされていません。
  • 説明 : 要求されたプロトコルはシステムで構成されていないか、プロトコルの実装が存在していません。たとえば、socket (Wsapiref_2qr6.asp) 呼び出しは、SOCK_DGRAM ソケットを要求しますが、これによりストリーム プロトコルが必要になります。

WSAESOCKTNOSUPPORT (10044)

  • 意味 : サポートされていないソケットの種類です。
  • 説明 : 指定されたソケットの種類のサポートはこのアドレス ファミリには存在しません。たとえば、省略可能な SOCK_RAW が socket (Wsapiref_2qr6.asp) 呼び出しで選択される場合がありますが、SOCK_RAW ソケットはサポートされていません。

WSAEOPNOTSUPP (10045)

  • 意味 : 操作がソケット上でサポートされていません。
  • 説明 : 実行された操作は、参照されているオブジェクトの種類ではサポートされていません。通常、このエラーは、この操作をサポートできないソケットに対するソケット記述子が、データグラム ソケットの接続を受け付けようとしているときに発生します。

WSAEPFNOSUPPORT (10046)

  • 意味 : プロトコル ファミリがサポートされていません。
  • 説明 : プロトコル ファミリがシステムで構成されていないか、そのための実装が存在していません。このメッセージの意味は、次の WSAEAFNOSUPPORT の意味とは若干異なります。しかし、多くの場合は相互に置き換えることができます。これらのいずれかのメッセージが Windows ソケット関数から返された場合、WSAEAFNOSUPPORT も示しています。

WSAEAFNOSUPPORT (10047)

  • 意味 : プロトコル ファミリはアドレス ファミリをサポートしていません。
  • 説明 : 要求されたプロトコルと互換性のないアドレスが使用されました。ソケットは、すべて、関連付けられたアドレス ファミリ (インターネット プロトコルの AF_INET) と、汎用プロトコルの種類 (SOCK_STREAM) を使用して作成されます。無効なプロトコルが socket (Wsapiref_2qr6.asp) 呼び出しで明示的に要求されたか、sendto (Wsapiref_4sqa.asp) などで適切でないファミリのアドレスがソケットに使用された場合、このエラーが返されます。

WSAEADDRINUSE (10048)

  • 意味 : アドレスは既に使用中です。
  • 説明 : 通常、ソケット アドレス (プロトコル/IP アドレス/ポート) は、それぞれ 1 つずつしか使用できません。プログラムが、既に存在するソケット (正しく閉じられなかったソケットまたは閉じている最中のソケット) で使用されている IP アドレスやポートにソケットをバインド (Wsapiref_6vzm.asp) すると、このエラーが発生します。同一のポート番号に複数のソケットをバインドする必要のあるサーバー プログラムの場合は、setsockopt (Wsapiref_94aa.asp)(SO_REUSEADDR) の使用を検討してください。クライアント プログラムは通常 bind を呼び出す必要はなく、connect (Wsapiref_8m7m.asp) は未使用のポートを自動的に選択します。bind がワイルドカード アドレス (ADDR_ANY など) を使用して呼び出された場合、WSAEADDRINUSE エラーは、特定のアドレスがコミットされるまで発生しない可能性があります。このエラーは、後に別の関数 (connect、listen、WSAConnect、および WSAJoinLeaf など) が呼び出されたときに発生することがあります。

WSAEADDRNOTAVAIL (10049)

  • 意味 : 要求されたアドレスを割り当てられません。
  • 説明 : 要求されたアドレスは、そのコンテキストで無効です。このエラーは、通常、ローカル コンピュータで無効なアドレスにバインド (Wsapiref_6vzm.asp) しようとした結果、発生します。また、このエラーは、リモート アドレスやポートがリモート コンピュータで無効な場合 (たとえば、アドレスやポートが 0 の場合) に、connect (Wsapiref_8m7m.asp)、sendto (Wsapiref_4sqa.asp)、WSAConnect (Wsapiref_8kc2.asp)、WSAJoinLeaf (Wsapiref_7dv6.asp)、または WSASendTo (Wsapiref_752q.asp) の結果として発生することもあります。

WSAENETDOWN (10050)

  • 意味 : ネットワークがダウンしています。
  • 説明 : ソケット操作により、ネットワークの停止が検出されています。このエラーは、ネットワーク システム (つまり、Windows ソケットの DLL が実行されるプロトコル スタック)、ネットワーク インターフェイス、またはローカル ネットワーク自体の深刻なエラーを示す可能性があります。

WSAENETUNREACH (10051)

  • 意味 : ICMP ネットワークに到達できません。
  • 説明 : 到達できないネットワークに対してソケット操作を実行しようとしました。このエラーは、通常、ローカル ソフトウェアがリモート ホストへの到達ルートを認識できないことを示します。

WSAENETRESET (10052)

  • 意味 : ネットワークがリセットされたため切断されました。
  • 説明 : 操作の実行中に、keep-alive 動作によってエラーが検出されたため、接続が切断されました。このエラーは、既にエラーとなった接続に SO_KEEPALIVE を設定しようとしたときに、setsockopt (Wsapiref_94aa.asp) から返されることもあります。

WSAECONNABORTED (10053)

  • 意味 : ソフトウェアによって接続が中止されました。
  • 説明 : 確立された接続が、おそらくデータ転送のタイムアウトまたはプロトコル エラーのため、ホスト コンピュータのソフトウェアによって停止されました。

WSAECONNRESET (10054)

  • 意味 : ピアによって接続がリセットされました。
  • 説明 : 既存の接続が、リモート ホストによって強制的に切断されました。このエラーは、通常、リモート ホストのピア プログラムが突然停止された場合、ホストが再起動された場合、またはリモート ホストが強制終了した場合に発生します。リモート ソケットの SO_LINGER オプションの詳細については、setsockopt (Wsapiref_94aa.asp) を参照してください。このエラーは、1 つまたは複数の操作の実行中に keep-alive 動作によってエラーが検出され、そのために接続が切断された場合に発生することもあります。実行中であった操作は、WSAENETRESET で失敗します。以降の操作は、WSAECONNRESET で失敗します。

WSAENOBUFS (10055)

  • 意味 : バッファ領域がサポートされていません。
  • 説明 : システムのバッファ領域が不足しているか、キューがいっぱいであるため、ソケット操作を実行できません。

WSAEISCONN (10056)

  • 意味 : ソケットは既に接続されています。
  • 説明 : 既に接続済みのソケットに対して、接続要求が行われました。また、既に接続済みの SOCK_DGRAM ソケットに対して sendto (Wsapiref_4sqa.asp) が呼び出された場合、実装によっては有効な動作として処理されますが、一部の実装からはこのエラーが返されることがあります (SOCK_STREAM ソケットの場合、sendto (Wsapiref_4sqa.asp) の To パラメータは無視されます)。

WSAENOTCONN (10057)

  • 意味 : ソケットが接続されていません。
  • 説明 : ソケットが接続されていないため、データの送信または受信要求はできません (また、sendto (Wsapiref_4sqa.asp) を使用してデータグラム ソケット上で送信する場合に、アドレスが指定されていません)。このエラーは、他のあらゆる種類の操作から返される可能性があります (たとえば、接続がリセットされている場合に setsockopt (Wsapiref_94aa.asp) で SO_KEEPALIVE を設定するなど)。

WSAESHUTDOWN (10058)

  • 意味 : ソケットのシャットダウン後に送信できません。
  • 説明 : 以前の shutdown (Wsapiref_60z6.asp) 呼び出しでその方向のソケットが既にシャットダウンされているため、データの送信または受信要求はできません。shutdown が呼び出されたときに、ソケットの部分的な終了が要求されます。これは送信または受信プロセス (あるいは両方) が中止されているというシグナルです。

WSAETIMEDOUT (10060)

  • 意味 : 接続がタイムアウトになりました。
  • 説明 : 接続済みの呼び出し先が一定の時間を過ぎても正常に応答しなかったため、接続の試行が失敗したか、接続済みのホストが応答に失敗したため、確立された接続が失敗しました。

WSAECONNREFUSED (10061)

  • 意味 : 接続が拒否されました。
  • 説明 : 対象のコンピュータによって能動的に拒否されたため、接続できません。このエラーは、通常、外部ホスト上の非アクティブなサービス (実行中のサーバー プログラムが存在しないホスト) に接続したために、発生します。

WSAEHOSTDOWN (10064)

  • 意味 : ホストがダウンしています。
  • 説明 : 接続先のホストがダウンしているため、ソケット操作が失敗しました。ソケット操作がホストの停止を検出しました。ローカル ホスト上でネットワーク アクティビティが開始されていません。このような状態は、多くの場合、WSAETIMEDOUT エラーによって示されます。

WSAEHOSTUNREACH (10065)

  • 意味 : ホストに到達するためのルートがありません。
  • 説明 : 到達できないホストに対してソケット操作を実行しようとしました。「WSAENETUNREACH」を参照してください。

WSAEPROCLIM (10067)

  • 意味 : プロセスが多すぎます。
  • 説明 : Windows ソケットの実装には、同時に使用できるプログラムの数に制限がある場合があります。上限に達すると、WSAStartup (Wsapiref_1v8y.asp) は、このエラーで失敗する可能性があります。

WSASYSNOTREADY (10091)

  • 意味 : ネットワーク サブシステムが利用できません。
  • 説明 : このエラーは、ネットワーク サービスの提供に使用される下位のシステムが現在利用できないために Windows ソケットの実装が現在動作していない場合に、WSAStartup (Wsapiref_1v8y.asp) から返されます。次の点を確認してください。
    • カレント パスに適切な Windows ソケット DLL ファイルがあること
    • 複数の Windows ソケットの実装を同時に使用していないこと
    • システムに複数の Winsock DLL がある場合、パスの最初の Winsock DLL が、現在読み込まれているネットワーク サブシステムに適していること
    • 必要なすべてコンポーネントが現在インストールされていて、Windows ソケットの実装のマニュアルに従って正しく構成されていること

WSAVERNOTSUPPORTED (10092)

  • 意味 : このバージョンの Winsock.dll はサポートされていません。
  • 説明 : 現在の Windows ソケットの実装は、プログラムから要求された Windows ソケット仕様のバージョンをサポートしていません。古い Windows ソケット DLL ファイルにアクセスしていないかどうかを確認する必要があります。

WSANOTINITIALISED (10093)

  • 意味 : WSAStartup の実行に成功していません。
  • 説明 : プログラムが WSAStartup (Wsapiref_1v8y.asp) を呼び出していないか、WSAStartup (Wsapiref_1v8y.asp) が失敗しました。プログラムが現在実行中のタスクによって所有されていないソケットにアクセスしている (タスク間でソケットを共有しようとしている) か、WSACleanup の呼び出し回数が多すぎます。

WSAEDISCON (10101)

  • 意味 : 正常なシャットダウン処理が進行中です。
  • 説明 : このエラーは、WSARecv (Wsapiref_4z1u.asp) および WSARecvFrom (Wsapiref_4wky.asp) から返され、リモートの呼び出し先が正常なシャットダウン処理を開始したことを示します。

WSATYPE_NOT_FOUND (10109)

  • 意味 : この種類のクラスが見つかりません。
  • 説明 : 指定されたクラスが見つかりませんでした。

WSAHOST_NOT_FOUND (11001)

  • 意味 : ホストが見つかりません。そのようなホストはありません。
  • 説明 : 名前が正式なホスト名またはエイリアスではないか、照会中のデータベースにありません。このエラーは、プロトコルやサービス クエリに対して返される場合もあり、指定された名前が関連するデータベースにないことを示します。

WSATRY_AGAIN (11002)

  • 意味 : ホストが見つかりません。権限を持つサーバーからの応答がありません。
  • 説明 : このエラーは、通常、ホストの名前解決中に一時的に発生するエラーで、権限を持つ DNS サーバーからの応答をローカル サーバーが受信しなかったことを示します。しばらくしてから再試行すると成功することがあります。

WSANO_RECOVERY (11003)

  • 意味 : 回復不可能なエラーが発生しました。
  • 説明 : このエラーは、データベースの参照中に発生した回復できないエラーの一種であることを示しています。このエラーは、データベース ファイル (BSD と互換性のある HOSTS、SERVICES、または PROTOCOLS ファイルなど) が見つからない場合、または重大なエラーで DNS 要求がサーバーから返された場合に、発生することがあります。

WSANO_DATA (11004)

  • 意味 : 要求された名前は有効ですが、要求された種類のデータ レコードがありません。
  • 説明 : 要求された名前は有効で、データベースに存在しますが、解決先の正しい関連データが存在しません。一般的な例として、DNS サーバーを使用してホスト名をアドレスに変換しようとした場合 (gethostbyname (Wsapiref_0q5u.asp) または WSAAsyncGetHostByName (Wsapiref_7bhu.asp) を使用) に発生することがあります。MX レコードは返されますが、A レコードは返されません。これはホスト自体は存在するが、直接到達できないことを示しています。

WSA_INVALID_HANDLE (オペレーティング システムに依存)

  • 意味 : 指定されたイベント オブジェクトのハンドルが無効です。
  • 説明 : プログラムがイベント オブジェクトの使用を試行しましたが、指定されたハンドルが無効でした。

WSA_INVALID_PARAMETER (オペレーティング システムに依存)

  • 意味 : 1 つまたは複数のパラメータが無効です。
  • 説明 : プログラムが、Win32 関数に直接マップされる Windows ソケット関数を使用しました。Win32 関数によって、1 つまたは複数のパラメータに問題があることが示されています。

WSA_IO_INCOMPLETE (オペレーティング システムに依存)

  • 意味 : 重複した I/O イベントはシグナルされた状態ではありません。
  • 説明 : まだ完了していない重複した操作の状態を、プログラムが確認しようとしました。重複した操作が完了するまで、ポーリング モードで WSAGetOverlappedResult を (fWait フラグを FALSE に設定して) 使用して重複した操作の完了タイミングを確認するプログラムに、このエラー コードが返されます。

WSA_IO_PENDING (オペレーティング システムに依存)

  • 意味 : 重複した操作は後に完了します。
  • 説明 : プログラムがすぐに完了できない重複した操作を開始しました。後に操作が完了したときに、完了を示すコードが送信されます。

WSA_NOT_ENOUGH_MEMORY (オペレーティング システムに依存)

  • 意味 : メモリが不足しています。
  • 説明 : プログラムが、Win32 関数に直接マップされる Windows ソケット関数を使用しました。Win32 関数によって、必要なメモリ リソースが不足していることが示されています。

WSA_OPERATION_ABORTED (オペレーティング システムに依存)

  • 意味 : 重複した操作が取り消されました。
  • 説明 : ソケットが閉じているか、WSAIoctl (Wsapiref_6ik2.asp) の SIO_FLUSH コマンドが実行されたため、重複した操作が取り消されました。

WSAINVALIDPROCTABLE (オペレーティング システムに依存)

  • 意味 : サービス プロバイダから返されたプロシージャ テーブルが無効です。
  • 説明 : サービス プロバイダが、Ws2_32.dll に無効なプロシージャ テーブルを返しました。このエラーは、通常、1 つまたは複数の関数ポインタが NULL であるために発生します。

WSAINVALIDPROVIDER (オペレーティング システムに依存)

  • 意味 : サービス プロバイダのバージョン番号が無効です。
  • 説明 : サービス プロバイダが 2.0 以外のバージョン番号を返しました。

WSAPROVIDERFAILEDINIT (オペレーティング システムに依存)

  • 意味 : サービス プロバイダを初期化できません。
  • 説明 : サービス プロバイダの DLL を読み込めない (LoadLibrary のエラー) か、プロバイダの WSPStartup/NSPStartup 関数でエラーが発生しています。

WSASYSCALLFAILURE (オペレーティング システムに依存)

  • 意味 : システム コールが失敗しました。
  • 説明 : 失敗してはならないシステム コールが失敗したときに、このエラーが返されます。たとえば、WaitForMultipleObjects 呼び出しが失敗した場合、あるいは registry 関数の 1 つがプロトコルや名前空間のカタログの変更を行おうとして失敗した場合に、このエラーが発生します。

関連情報


この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 819124 (最終更新日 2004-05-03) を基に作成したものです。