Freigeben über


WSADATA-Struktur (winsock.h)

Die WSADATA-Struktur enthält Informationen zur Windows Sockets-Implementierung.

Syntax

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;

Member

wVersion

Typ: WORD

Die Version der Windows Sockets-Spezifikation, die der Ws2_32.dll erwartet, dass der Aufrufer verwendet wird. Das Hochreihenfolge-Byte gibt die Nebenversionsnummer an. das Byte mit niedriger Reihenfolge gibt die Hauptversionsnummer an.

wHighVersion

Typ: WORD

Die höchste Version der Windows Sockets-Spezifikation, die vom Ws2_32.dll unterstützt werden kann. Das Hochreihenfolge-Byte gibt die Nebenversionsnummer an. das Byte mit niedriger Reihenfolge gibt die Hauptversionsnummer an.

Dies ist der gleiche Wert wie der wVersion-Member , wenn die im wVersionRequested-Parameter angeforderte Version, die an die WSAStartup-Funktion übergeben wird, die höchste Version der Windows Sockets-Spezifikation ist, die vom Ws2_32.dll unterstützt werden kann.

iMaxSockets

Typ: unsigned short

Die maximale Anzahl von Sockets, die geöffnet werden können. Dieser Member sollte für Windows Sockets, Version 2 und höher, ignoriert werden.

Der iMaxSockets-Member wird aus Gründen der Kompatibilität mit der Windows Sockets-Spezifikation 1.1 beibehalten, sollte aber nicht beim Entwickeln neuer Anwendungen verwendet werden. Kein einzelner Wert kann für alle zugrunde liegenden Dienstanbieter geeignet sein. Die Architektur von Windows Sockets wurde in Version 2 geändert, um mehrere Anbieter zu unterstützen, und die WSADATA-Struktur gilt nicht mehr für den Stapel eines einzelnen Anbieters.

iMaxUdpDg

Typ: unsigned short

Die maximale Größe von Datagrammnachrichten. Dieses Element wird für Windows Sockets, Version 2 und höher, ignoriert.

Das iMaxUdpDg-Element wird aus Gründen der Kompatibilität mit der Windows Sockets-Spezifikation 1.1 beibehalten, sollte aber nicht beim Entwickeln neuer Anwendungen verwendet werden. Die Architektur von Windows Sockets wurde in Version 2 geändert, um mehrere Anbieter zu unterstützen, und die WSADATA-Struktur gilt nicht mehr für den Stapel eines einzelnen Anbieters. Für die tatsächliche maximale Nachrichtengröße, die für einen bestimmten Windows Sockets-Dienstanbieter und Sockettyp spezifisch ist, sollten Anwendungen getockopt verwenden, um den Wert der Option SO_MAX_MSG_SIZE abzurufen, nachdem ein Socket erstellt wurde.

lpVendorInfo

Typ: char FAR*

Ein Zeiger auf anbieterspezifische Informationen. Dieser Member sollte für Windows Sockets, Version 2 und höher, ignoriert werden.

Das lpVendorInfo-Element wird aus Gründen der Kompatibilität mit der Windows Sockets-Spezifikation 1.1 beibehalten. Die Architektur von Windows Sockets wurde in Version 2 geändert, um mehrere Anbieter zu unterstützen, und die WSADATA-Struktur gilt nicht mehr für den Stapel eines einzelnen Anbieters. Anwendungen, die auf herstellerspezifische Konfigurationsinformationen zugreifen müssen, sollten getockopt verwenden, um den Wert der Option PVD_CONFIG für anbieterspezifische Informationen abzurufen.

szDescription[WSADESCRIPTION_LEN + 1]

Typ: char[WSADESCRIPTION_LEN+1]

Eine NULL-beendete ASCII-Zeichenfolge, in die der Ws2_32.dll eine Beschreibung der Windows Sockets-Implementierung kopiert. Der Text (bis zu 256 Zeichen lang) kann beliebige Zeichen mit Ausnahme von Steuerelement- und Formatierungszeichen enthalten. Die wahrscheinlichste Verwendung, die eine Anwendung für diesen Member hätte, besteht darin, es in einer status-Nachricht anzuzeigen (möglicherweise abgeschnitten).

szSystemStatus[WSASYS_STATUS_LEN + 1]

Typ: char[WSASYS_STATUS_LEN+1]

Eine MIT NULL beendete ASCII-Zeichenfolge, in die der Ws2_32.dll relevante status- oder Konfigurationsinformationen kopiert. Der Ws2_32.dll sollte diesen Parameter nur verwenden, wenn die Informationen für den Benutzer oder das Supportpersonal nützlich sein könnten. Dieses Element sollte nicht als Erweiterung des szDescription-Parameters betrachtet werden.

Hinweise

Die WSAStartup-Funktion initiiert die Verwendung der Windows Sockets-DLL durch einen Prozess. Die WSAStartup-Funktion gibt einen Zeiger auf den
WSADATA-Struktur im lpWSAData-Parameter .

Die aktuelle Version der Windows Sockets-Spezifikation, die im wHighVersion-Element des
Die WSADATA-Struktur ist Version 2.2 mit der Hauptversionsnummer im low-Byte und der Nebenversionsnummer im Hochbyte codiert. Diese Version der aktuellen Winsock-DLL Ws2_32.dllunterstützt Anwendungen, die eine der folgenden Versionen der Windows Sockets-Spezifikation anfordern:

  • 1.0
  • 1.1
  • 2.0
  • 2.1
  • 2.2
Abhängig von der von der Anwendung angeforderten Version ist eine der obigen Versionsnummern der Wert, der als Hauptversionsnummer im niedrigen Byte und die Nebenversionsnummer im high-Byte codiert ist, der im wVersion-Member der WSADATA-Struktur zurückgegeben wird.
Hinweis Eine Anwendung sollte die Elemente iMaxsockets, iMaxUdpDg und lpVendorInfo in WSADATA ignorieren, wenn der Wert in wVersion nach einem erfolgreichen Aufruf von WSAStartup mindestens 2 beträgt. Dies liegt daran, dass die Architektur von Windows Sockets in Version 2 geändert wurde, um mehrere Anbieter zu unterstützen, und WSADATA nicht mehr für den Stapel eines einzelnen Anbieters gilt. Zwei neue Socketoptionen werden eingeführt, um anbieterspezifische Informationen zu liefern: SO_MAX_MSG_SIZE (ersetzt das iMaxUdpDg-Element ) und PVD_CONFIG (ermöglicht jede andere anbieterspezifische Konfiguration).
 

Beispiele

Im folgenden Beispiel wird die Verwendung der WSADATA-Struktur veranschaulicht.

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. */




Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile winsock.h (einschließlich Winsock2.h)

Weitere Informationen

SOL_SOCKET Socketoptionen

Socketoptionen und IOCTLs

WSAStartup

getsockopt