WSADATA 結構 (winsock.h)

WSADATA 結構包含 Windows Sockets 實作的相關信息。

語法

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 Sockets 規格版本。 高序位元組會指定次要版本號碼;低序位元組會指定主要版本號碼。

wHighVersion

類型: WORD

Ws2_32.dll 可支援的 Windows 套接字規格最高版本。 高序位元組會指定次要版本號碼;低序位元組會指定主要版本號碼。

當傳遞至 WSAStartup 函式之 wVersionRequested 參數中要求的版本是 Ws2_32.dll 可支援的 Windows Sockets 規格最高版本時,這個值會與 wVersion 成員相同。

iMaxSockets

類型: 不帶正負號的簡短

可能開啟的套接字數目上限。 Windows Sockets 第 2 版和更新版本應忽略此成員。

iMaxSockets 成員會保留以與 Windows Sockets 規格 1.1 相容,但在開發新應用程式時不應使用。 所有基礎服務提供者都不適用任何單一值。 Windows 套接字在第 2 版中的架構已變更為支援多個提供者,且 WSADATA 結構不再適用於單一廠商的堆疊。

iMaxUdpDg

類型: 不帶正負號的簡短

數據報訊息大小上限。 Windows Sockets 第 2 版和更新版本會忽略此成員。

iMaxUdpDg 成員會保留以與 Windows Sockets 規格 1.1 相容,但在開發新應用程式時不應使用。 Windows 套接字在第 2 版中的架構已變更為支援多個提供者,且 WSADATA 結構不再適用於單一廠商的堆疊。 針對特定 Windows 套接字服務提供者和套接字類型特定的實際訊息大小上限,應用程式應該使用 getsockopt 來擷取建立套接字之後SO_MAX_MSG_SIZE選項的值。

lpVendorInfo

類型: char FAR*

廠商特定資訊的指標。 Windows Sockets 第 2 版和更新版本應忽略此成員。

lpVendorInfo 成員會保留,以便與 Windows Sockets 規格 1.1 兼容。 Windows 套接字在第 2 版中的架構已變更為支援多個提供者,且 WSADATA 結構不再適用於單一廠商的堆疊。 需要存取廠商特定設定資訊的應用程式應該使用 getsockopt 來擷取廠商特定資訊之選項PVD_CONFIG的值。

szDescription[WSADESCRIPTION_LEN + 1]

類型: char[WSADESCRIPTION_LEN+1]

NULL 終止的 ASCII 字串,Ws2_32.dll 複製 Windows Sockets 實作的描述。 文字長度最多 (256 個字元,) 可以包含控件和格式化字元以外的任何字元。 此成員可能擁有的應用程式最可能用來顯示它, (狀態消息中可能截斷) 。

szSystemStatus[WSASYS_STATUS_LEN + 1]

類型: char[WSASYS_STATUS_LEN+1]

NULL 終止的 ASCII 字串,Ws2_32.dll 複製相關的狀態或組態資訊。 只有當資訊對使用者或支持人員而言可能很有用時, Ws2_32.dll 才應該使用此參數。 此成員不應視為 szDescription 參數的延伸。

備註

WSAStartup 函式會由進程起始 Windows Sockets DLL 的使用。 WSAStartup 函式會傳回 的指標
lpWSAData 參數中的 WSADATA 結構。

wHighVersion 成員中傳回的目前 Windows Sockets 規格版本
WSADATA 結構是以低位元組的主要版本號碼和高位元組中的次要版本號碼編碼的 2.2 版。 這個版本的目前 Winsock DLL Ws2_32.dll支援要求下列任何 Windows Sockets 規格版本的應用程式:

  • 1.0
  • 1.1
  • 2.0
  • 2.1
  • 2.2
根據應用程式所要求的版本,上述其中一個版本號碼是編碼為低位元組中主要版本號碼的值,以及 WSADATA 結構 wVersion 成員中傳回的高位元節次要版本號碼。
注意如果成功呼叫 WSAStartup 之後的 wVersion 值至少為 2,應用程式應該忽略 WSADATA 中的 iMaxsocketsiMaxUdpDglpVendorInfo 成員。 這是因為 Windows 套接字的架構在第 2 版中變更為支援多個提供者,而 WSADATA 不再適用於單一廠商的堆疊。 引進了兩個新的套接字選項來提供提供者特定資訊: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 [僅限桌面應用程式]
標頭 winsock.h (包含 Winsock2.h)

另請參閱

SOL_SOCKET套接字選項

套接字選項和IOCTL

WSAStartup

getsockopt