WSADATA 結構 (winsock2.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, *LPWSADATA;

成員

wVersion

類型: WORD

Ws2_32.dll預期呼叫端使用的 Windows Sockets 規格版本。 高序位元組會指定次要版本號碼;低序位元組會指定主要版本號碼。

wHighVersion

類型: WORD

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

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

iMaxSockets

類型: 不帶正負號的 short

可開啟的通訊端數目上限。 Windows Sockets 第 2 版和更新版本應該忽略這個成員。

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

iMaxUdpDg

類型: 不帶正負號的 short

資料包訊息大小上限。 Windows Sockets 第 2 版和更新版本會忽略這個成員。

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

lpVendorInfo

類型: char FAR*

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

lpVendorInfo成員會保留,以便與 Windows Sockets 規格 1.1 相容。 Windows Sockets 在版本 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成員。 這是因為第 2 版中的 Windows 通訊端架構已變更以支援多個提供者,而 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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 winsock2.h (包括 Winsock2.h)

另請參閱

SOL_SOCKET通訊端選項

通訊端選項和 IOCTL

WSAStartup

getsockopt