Estructura WSADATA (winsock2.h)

La estructura WSADATA contiene información sobre la implementación de Windows Sockets.

Sintaxis

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;

Miembros

wVersion

Tipo: WORD

La versión de la especificación de Windows Sockets que el Ws2_32.dll espera que use el autor de la llamada. El byte de orden superior especifica el número de versión secundaria; el byte de orden bajo especifica el número de versión principal.

wHighVersion

Tipo: WORD

La versión más alta de la especificación de Windows Sockets que el Ws2_32.dll puede admitir. El byte de orden superior especifica el número de versión secundaria; el byte de orden bajo especifica el número de versión principal.

Este es el mismo valor que el miembro wVersion cuando la versión solicitada en el parámetro wVersionRequested pasado a la función WSAStartup es la versión más alta de la especificación de Windows Sockets que el Ws2_32.dll puede admitir.

iMaxSockets

Tipo: unsigned short

Número máximo de sockets que se pueden abrir. Este miembro debe omitirse para Windows Sockets versión 2 y posteriores.

El miembro iMaxSockets se conserva por compatibilidad con la especificación 1.1 de Windows Sockets, pero no debe usarse al desarrollar nuevas aplicaciones. Ningún valor único puede ser adecuado para todos los proveedores de servicios subyacentes. La arquitectura de Windows Sockets cambió en la versión 2 para admitir varios proveedores y la estructura WSADATA ya no se aplica a la pila de un único proveedor.

iMaxUdpDg

Tipo: unsigned short

Tamaño máximo del mensaje de datagrama. Este miembro se omite para Windows Sockets versión 2 y posteriores.

El miembro iMaxUdpDg se conserva por compatibilidad con la especificación 1.1 de Windows Sockets, pero no debe usarse al desarrollar nuevas aplicaciones. La arquitectura de Windows Sockets cambió en la versión 2 para admitir varios proveedores y la estructura WSADATA ya no se aplica a la pila de un único proveedor. Para el tamaño máximo real del mensaje específico de un determinado proveedor de servicios de Windows Sockets y un tipo de socket, las aplicaciones deben usar getsockopt para recuperar el valor de la opción SO_MAX_MSG_SIZE después de crear un socket.

lpVendorInfo

Tipo: char FAR*

Puntero a información específica del proveedor. Este miembro debe omitirse para Windows Sockets versión 2 y posteriores.

El miembro lpVendorInfo se conserva por compatibilidad con la especificación 1.1 de Windows Sockets. La arquitectura de Windows Sockets cambió en la versión 2 para admitir varios proveedores y la estructura WSADATA ya no se aplica a la pila de un único proveedor. Las aplicaciones que necesitan acceder a la información de configuración específica del proveedor deben usar getsockopt para recuperar el valor de la opción PVD_CONFIG para obtener información específica del proveedor.

szDescription[WSADESCRIPTION_LEN + 1]

Tipo: char[WSADESCRIPTION_LEN+1]

Cadena ASCII terminada en NULL en la que el Ws2_32.dll copia una descripción de la implementación de Windows Sockets. El texto (hasta 256 caracteres de longitud) puede contener cualquier carácter excepto los caracteres de control y formato. Lo más probable es usar que una aplicación tendría para este miembro es mostrarla (posiblemente truncada) en un mensaje de estado.

szSystemStatus[WSASYS_STATUS_LEN + 1]

Tipo: char[WSASYS_STATUS_LEN+1]

Una cadena ASCII terminada en NULL en la que el Ws2_32.dll copia la información de estado o configuración pertinentes. El Ws2_32.dll solo debe usar este parámetro si la información puede ser útil para el usuario o el personal de soporte técnico. Este miembro no debe considerarse una extensión del parámetro szDescription .

Comentarios

La función WSAStartup inicia el uso del archivo DLL de Windows Sockets mediante un proceso. La función WSAStartup devuelve un puntero al
Estructura WSADATA en el parámetro lpWSAData .

La versión actual de la especificación de Windows Sockets devuelta en el miembro wHighVersion del
La estructura WSADATA está codificada en la versión 2.2 con el número de versión principal en el byte bajo y el número de versión secundaria en el byte superior. Esta versión del archivo DLL de Winsock actual, Ws2_32.dll, admite aplicaciones que solicitan cualquiera de las siguientes versiones de la especificación de Windows Sockets:

  • 1.0
  • 1.1
  • 2.0
  • 2.1
  • 2.2
Según la versión solicitada por la aplicación, uno de los números de versión anteriores es el valor codificado como número de versión principal en el número de versión inferior y el número de versión secundaria del byte superior que se devuelve en el miembro wVersion de la estructura WSADATA .
Nota Una aplicación debe omitir los miembros iMaxsockets, iMaxUdpDg y lpVendorInfo en WSADATA si el valor de wVersion después de una llamada correcta a WSAStartup es al menos 2. Esto se debe a que la arquitectura de Windows Sockets cambió en la versión 2 para admitir varios proveedores y WSADATA ya no se aplica a la pila de un solo proveedor. Se presentan dos nuevas opciones de socket para proporcionar información específica del proveedor: SO_MAX_MSG_SIZE (reemplaza el miembro iMaxUdpDg ) y PVD_CONFIG (permite que se produzca cualquier otra configuración específica del proveedor).
 

Ejemplos

En el ejemplo siguiente se muestra el uso de la estructura 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. */




Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado winsock2.h (incluya Winsock2.h)

Consulte también

Opciones de socket de SOL_SOCKET

Opciones de socket e ICTLs

WSAStartup

getsockopt