Structure WSADATA (winsock.h)

La structure WSADATA contient des informations sur l’implémentation des sockets Windows.

Syntaxe

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;

Membres

wVersion

Type : WORD

Version de la spécification des sockets Windows que le Ws2_32.dll attend de l’appelant. L’octet d’ordre élevé spécifie le numéro de version mineure ; l’octet de faible ordre spécifie le numéro de version principale.

wHighVersion

Type : WORD

Version la plus élevée de la spécification des sockets Windows que le Ws2_32.dll peut prendre en charge. L’octet d’ordre élevé spécifie le numéro de version mineure ; l’octet de faible ordre spécifie le numéro de version principale.

Il s’agit de la même valeur que le membre wVersion lorsque la version demandée dans le paramètre wVersionRequested passé à la fonction WSAStartup est la version la plus élevée de la spécification des sockets Windows que le Ws2_32.dll peut prendre en charge.

iMaxSockets

Type : court non signé

Nombre maximal de sockets pouvant être ouverts. Ce membre doit être ignoré pour les sockets Windows version 2 et ultérieure.

Le membre iMaxSockets est conservé à des fins de compatibilité avec la spécification Windows Sockets 1.1, mais ne doit pas être utilisé lors du développement de nouvelles applications. Aucune valeur unique ne peut être appropriée pour tous les fournisseurs de services sous-jacents. L’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et la structure WSADATA ne s’applique plus à la pile d’un seul fournisseur.

iMaxUdpDg

Type : court non signé

Taille maximale du message de datagramme. Ce membre est ignoré pour les sockets Windows version 2 et versions ultérieures.

Le membre iMaxUdpDg est conservé à des fins de compatibilité avec la spécification 1.1 des sockets Windows, mais ne doit pas être utilisé lors du développement de nouvelles applications. L’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et la structure WSADATA ne s’applique plus à la pile d’un seul fournisseur. Pour la taille de message maximale réelle spécifique à un fournisseur de services et à un type de socket Windows Sockets particulier, les applications doivent utiliser getsockopt pour récupérer la valeur de l’option SO_MAX_MSG_SIZE après la création d’un socket.

lpVendorInfo

Type : char FAR*

Pointeur vers des informations spécifiques au fournisseur. Ce membre doit être ignoré pour les sockets Windows version 2 et ultérieure.

Le membre lpVendorInfo est conservé à des fins de compatibilité avec la spécification Windows Sockets 1.1. L’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et la structure WSADATA ne s’applique plus à la pile d’un seul fournisseur. Les applications qui ont besoin d’accéder aux informations de configuration propres au fournisseur doivent utiliser getsockopt pour récupérer la valeur de l’option PVD_CONFIG d’informations spécifiques au fournisseur.

szDescription[WSADESCRIPTION_LEN + 1]

Type : char[WSADESCRIPTION_LEN+1]

Chaîne ASCII terminée par null dans laquelle le Ws2_32.dll copie une description de l’implémentation des sockets Windows. Le texte (jusqu’à 256 caractères) peut contenir n’importe quel caractère à l’exception des caractères de contrôle et de mise en forme. L’utilisation la plus probable d’une application pour ce membre est de l’afficher (éventuellement tronqué) dans un message status.

szSystemStatus[WSASYS_STATUS_LEN + 1]

Type : char[WSASYS_STATUS_LEN+1]

Chaîne ASCII terminée par null dans laquelle le Ws2_32.dll copie les informations de status ou de configuration pertinentes. Le Ws2_32.dll doit utiliser ce paramètre uniquement si les informations peuvent être utiles à l’utilisateur ou au personnel du support technique. Ce membre ne doit pas être considéré comme une extension du paramètre szDescription .

Remarques

La fonction WSAStartup initie l’utilisation de la DLL de sockets Windows par un processus. La fonction WSAStartup retourne un pointeur vers le
Structure WSADATA dans le paramètre lpWSAData .

Version actuelle de la spécification windows Sockets retournée dans le membre wHighVersion du
La structure WSADATA est encodée dans la version 2.2 avec le numéro de version principale dans l’octet inférieur et le numéro de version secondaire dans l’octet élevé. Cette version de la DLL Winsock actuelle, Ws2_32.dll, prend en charge les applications qui demandent l’une des versions suivantes de la spécification des sockets Windows :

  • 1.0
  • 1.1
  • 2.0
  • 2.1
  • 2.2
Selon la version demandée par l’application, l’un des numéros de version ci-dessus est la valeur encodée en tant que numéro de version principale dans l’octet inférieur et le numéro de version secondaire dans l’octet élevé retourné dans le membre wVersion de la structure WSADATA .
Note Une application doit ignorer les membres iMaxsockets, iMaxUdpDg et lpVendorInfo dans WSADATA si la valeur dans wVersion après un appel réussi à WSAStartup est au moins 2. En effet, l’architecture des sockets Windows a changé dans la version 2 pour prendre en charge plusieurs fournisseurs, et WSADATA ne s’applique plus à la pile d’un seul fournisseur. Deux nouvelles options de socket sont introduites pour fournir des informations spécifiques au fournisseur : SO_MAX_MSG_SIZE (remplace le membre iMaxUdpDg ) et PVD_CONFIG (permet à toute autre configuration spécifique au fournisseur de se produire).
 

Exemples

L’exemple suivant illustre l’utilisation de la structure 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. */




Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête winsock.h (inclure Winsock2.h)

Voir aussi

SOL_SOCKET Socket Options

Options de socket et IOCTL

WSAStartup

getsockopt