Estructura WSADATA (winsock.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;

Miembros

wVersion

Tipo: WORD

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 que se pasa 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 del 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 getockopt 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 getockopt 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 caracteres excepto los caracteres de control y formato. Lo más probable es usar que una aplicación tendría para este miembro es mostrarlo (posiblemente truncado) en un mensaje de estado.

szSystemStatus[WSASYS_STATUS_LEN + 1]

Tipo: char[WSASYS_STATUS_LEN+1]

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 debe usar este parámetro solo si la información podría 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 alto. 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
Dependiendo de la versión solicitada por la aplicación, uno de los números de versión anteriores es el valor codificado como el número de versión principal en el byte bajo y el número de versión secundaria en el byte alto 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 único proveedor. Se introducen dos nuevas opciones de socket para proporcionar información específica del proveedor: SO_MAX_MSG_SIZE (reemplaza al 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

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

Consulte también

Opciones de socket de SOL_SOCKET

Opciones de socket e ICTLs

WSAStartup

getsockopt