WSADATA 構造体 (winsock.h)

WSADATA 構造体には、Windows ソケットの実装に関する情報が含まれています。

構文

typedef struct WSAData {
  WORD           wVersion;
  WORD           wHighVersion;
#if ...
  unsigned short iMaxSockets;
#if ...
  unsigned short iMaxUdpDg;
#if ...
  char           *lpVendorInfo;
#if ...
  char           szDescription[WSADESCRIPTION_LEN + 1];
#if ...
  char           szSystemStatus[WSASYS_STATUS_LEN + 1];
#else
  char           szDescription[WSADESCRIPTION_LEN + 1];
#endif
#else
  char           szSystemStatus[WSASYS_STATUS_LEN + 1];
#endif
#else
  unsigned short iMaxSockets;
#endif
#else
  unsigned short iMaxUdpDg;
#endif
#else
  char           *lpVendorInfo;
#endif
} WSADATA;

メンバー

wVersion

種類: WORD

Ws2_32.dll が呼び出し元で使用することを想定している Windows ソケット仕様のバージョン。 上位バイトはマイナー バージョン番号を指定します。下位バイトはメジャー バージョン番号を指定します。

wHighVersion

種類: WORD

Ws2_32.dll でサポートできる Windows ソケット仕様の最上位バージョン。 上位バイトはマイナー バージョン番号を指定します。下位バイトはメジャー バージョン番号を指定します。

WSAStartup 関数に渡される wVersionRequested パラメーターで要求されたバージョンが、Ws2_32.dll でサポートできる Windows ソケット仕様の最上位バージョンである場合、これは wVersion メンバーと同じ値です。

iMaxSockets

型: unsigned short

開くことができるソケットの最大数。 このメンバーは、Windows ソケット バージョン 2 以降では無視する必要があります。

iMaxSockets メンバーは、Windows Sockets 仕様 1.1 との互換性のために保持されますが、新しいアプリケーションを開発する場合は使用しないでください。 基になるすべてのサービス プロバイダーに適した値は 1 つもありません。 Windows ソケットのアーキテクチャは、複数のプロバイダーをサポートするようにバージョン 2 で変更され、 WSADATA 構造体は 1 つのベンダーのスタックには適用されなくなりました。

iMaxUdpDg

型: unsigned short

データグラム メッセージの最大サイズ。 このメンバーは、Windows ソケット バージョン 2 以降では無視されます。

iMaxUdpDg メンバーは、Windows ソケット仕様 1.1 との互換性のために保持されますが、新しいアプリケーションを開発する場合は使用しないでください。 Windows ソケットのアーキテクチャは、複数のプロバイダーをサポートするようにバージョン 2 で変更され、 WSADATA 構造体は 1 つのベンダーのスタックには適用されなくなりました。 特定の Windows ソケット サービス プロバイダーとソケットの種類に固有の実際の最大メッセージ サイズについては、アプリケーションで getsockopt を 使用して、ソケットの作成後にオプション SO_MAX_MSG_SIZEの値を取得する必要があります。

lpVendorInfo

型: char FAR*

ベンダー固有の情報へのポインター。 このメンバーは、Windows ソケット バージョン 2 以降では無視する必要があります。

lpVendorInfo メンバーは、Windows ソケット仕様 1.1 との互換性のために保持されます。 Windows ソケットのアーキテクチャは、複数のプロバイダーをサポートするようにバージョン 2 で変更され、 WSADATA 構造体は 1 つのベンダーのスタックには適用されなくなりました。 ベンダー固有の構成情報にアクセスする必要があるアプリケーションでは 、getsockopt を 使用して、ベンダー固有の情報のオプション PVD_CONFIGの値を取得する必要があります。

szDescription[WSADESCRIPTION_LEN + 1]

型: char[WSADESCRIPTION_LEN+1]

Ws2_32.dll が Windows ソケット実装の説明をコピーする NULL で終わる ASCII 文字列。 テキスト (最大 256 文字) には、コントロール文字と書式設定文字を除く任意の文字を含めることができます。 アプリケーションがこのメンバーに対して使用する可能性が最も高いのは、ステータス メッセージに表示 (切り捨て) することです。

szSystemStatus[WSASYS_STATUS_LEN + 1]

型: char[WSASYS_STATUS_LEN+1]

Ws2_32.dll が関連する状態または構成情報をコピーする NULL で終わる ASCII 文字列。 Ws2_32.dll は、情報がユーザーまたはサポート スタッフに役立つ可能性がある場合にのみ、このパラメーターを使用する必要があります。 このメンバーは、 szDescription パラメーターの拡張と見なすべきではありません。

注釈

WSAStartup 関数は、プロセスによって Windows ソケット DLL の使用を開始します。 WSAStartup 関数は、 へのポインターを返します。
lpWSAData パラメーターの WSADATA 構造体。

wHighVersion メンバーで返される Windows ソケット仕様の現在のバージョン
WSADATA 構造体はバージョン 2.2 で、下位バイトのメジャー バージョン番号と上位バイトのマイナー バージョン番号でエンコードされています。 このバージョンの現在の Winsock DLL Ws2_32.dllでは、次のいずれかのバージョンの Windows ソケット仕様を要求するアプリケーションがサポートされています。

  • 1.0
  • 1.1
  • 2.0
  • 2.1
  • 2.2
アプリケーションによって要求されたバージョンに応じて、上記のバージョン番号の 1 つは、下位バイトのメジャー バージョン番号としてエンコードされた値と、WSADATA 構造体の wVersion メンバーで返される高バイトのマイナー バージョン番号です。
メモWSAStartup の呼び出しが成功した後の wVersion の値が 2 以上の場合、アプリケーションは WSADATAiMaxsocketsiMaxUdpDglpVendorInfo メンバーを無視する必要があります。 これは、Windows ソケットのアーキテクチャが複数のプロバイダーをサポートするようにバージョン 2 で変更され、 WSADATA が 1 つのベンダーのスタックに適用されなくなったためです。 プロバイダー固有の情報を提供するために、2 つの新しいソケット オプションが導入されました。SO_MAX_MSG_SIZE ( iMaxUdpDg メンバーを置き換えます) とPVD_CONFIG (他のプロバイダー固有の構成を実行できます)。
 

次の例では、 WSADATA 構造体の使用方法を示します。

WORD wVersionRequested;
WSADATA wsaData;
int err;
 
wVersionRequested = MAKEWORD( 2, 2 );
 
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    return;
}
 
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater    */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we      */
/* requested.                                        */
 
if ( LOBYTE( wsaData.wVersion ) != 2 ||
        HIBYTE( wsaData.wVersion ) != 2 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    WSACleanup( );
    return; 
}
 
/* The WinSock DLL is acceptable. Proceed. */




要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header winsock.h (Winsock2.h を含む)

こちらもご覧ください

SOL_SOCKET ソケット オプション

ソケット オプションと IOCTL

WSAStartup

getsockopt