Estrutura WSADATA (winsock.h)

A estrutura WSADATA contém informações sobre a implementação do Windows Sockets.

Sintaxe

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;

Membros

wVersion

Tipo: WORD

A versão da especificação do Windows Sockets que o Ws2_32.dll espera que o chamador use. O byte de alta ordem especifica o número de versão secundária; o byte de baixa ordem especifica o número de versão principal.

wHighVersion

Tipo: WORD

A versão mais alta da especificação do Windows Sockets que o Ws2_32.dll pode dar suporte. O byte de alta ordem especifica o número de versão secundária; o byte de baixa ordem especifica o número de versão principal.

Esse é o mesmo valor que o membro wVersion quando a versão solicitada no parâmetro wVersionRequested passada para a função WSAStartup é a versão mais alta da especificação do Windows Sockets que o Ws2_32.dll pode dar suporte.

iMaxSockets

Tipo: curto sem sinal

O número máximo de soquetes que podem ser abertos. Esse membro deve ser ignorado para o Windows Sockets versão 2 e posterior.

O membro iMaxSockets é retido para compatibilidade com a especificação 1.1 do Windows Sockets, mas não deve ser usado ao desenvolver novos aplicativos. Nenhum valor único pode ser apropriado para todos os provedores de serviços subjacentes. A arquitetura do Windows Sockets foi alterada na versão 2 para dar suporte a vários provedores e a estrutura WSADATA não se aplica mais à pilha de um único fornecedor.

iMaxUdpDg

Tipo: curto sem sinal

O tamanho máximo da mensagem de datagrama. Esse membro é ignorado para o Windows Sockets versão 2 e posterior.

O membro iMaxUdpDg é retido para compatibilidade com a especificação 1.1 do Windows Sockets, mas não deve ser usado ao desenvolver novos aplicativos. A arquitetura do Windows Sockets foi alterada na versão 2 para dar suporte a vários provedores e a estrutura WSADATA não se aplica mais à pilha de um único fornecedor. Para o tamanho máximo real da mensagem específico de um determinado provedor de serviços do Windows Sockets e do tipo de soquete, os aplicativos devem usar getsockopt para recuperar o valor da opção SO_MAX_MSG_SIZE após a criação de um soquete.

lpVendorInfo

Tipo: char FAR*

Um ponteiro para informações específicas do fornecedor. Esse membro deve ser ignorado para o Windows Sockets versão 2 e posterior.

O membro lpVendorInfo é retido para compatibilidade com a especificação 1.1 do Windows Sockets. A arquitetura do Windows Sockets foi alterada na versão 2 para dar suporte a vários provedores e a estrutura WSADATA não se aplica mais à pilha de um único fornecedor. Os aplicativos que precisam acessar informações de configuração específicas do fornecedor devem usar getsockopt para recuperar o valor da opção PVD_CONFIG para informações específicas do fornecedor.

szDescription[WSADESCRIPTION_LEN + 1]

Tipo: char[WSADESCRIPTION_LEN+1]

Uma cadeia de caracteres ASCII terminada em NULL na qual o Ws2_32.dll copia uma descrição da implementação do Windows Sockets. O texto (até 256 caracteres de comprimento) pode conter qualquer caractere, exceto caracteres de controle e formatação. O uso mais provável que um aplicativo teria para esse membro é exibi-lo (possivelmente truncado) em uma mensagem status.

szSystemStatus[WSASYS_STATUS_LEN + 1]

Tipo: char[WSASYS_STATUS_LEN+1]

Uma cadeia de caracteres ASCII terminada em NULL na qual o Ws2_32.dll copia informações relevantes de configuração ou status. O Ws2_32.dll deve usar esse parâmetro somente se as informações puderem ser úteis para o usuário ou a equipe de suporte. Esse membro não deve ser considerado como uma extensão do parâmetro szDescription .

Comentários

A função WSAStartup inicia o uso da DLL do Windows Sockets por um processo. A função WSAStartup retorna um ponteiro para o
Estrutura WSADATA no parâmetro lpWSAData .

A versão atual da especificação do Windows Sockets retornada no membro wHighVersion do
A estrutura WSADATA é codificada na versão 2.2 com o número de versão principal no byte baixo e o número de versão secundária no byte alto. Esta versão da DLL do Winsock atual, Ws2_32.dll, dá suporte a aplicativos que solicitam qualquer uma das seguintes versões da especificação do Windows Sockets:

  • 1.0
  • 1,1
  • 2,0
  • 2.1
  • 2.2
Dependendo da versão solicitada pelo aplicativo, um dos números de versão acima é o valor codificado como o número de versão principal no byte baixo e o número de versão secundária no byte alto retornado no membro wVersion da estrutura WSADATA .
Nota Um aplicativo deve ignorar os membros iMaxsockets, iMaxUdpDg e lpVendorInfo no WSADATA se o valor em wVersion após uma chamada bem-sucedida para WSAStartup for pelo menos 2. Isso ocorre porque a arquitetura do Windows Sockets foi alterada na versão 2 para dar suporte a vários provedores e o WSADATA não se aplica mais à pilha de um único fornecedor. Duas novas opções de soquete são introduzidas para fornecer informações específicas do provedor: SO_MAX_MSG_SIZE (substitui o membro iMaxUdpDg ) e PVD_CONFIG (permite que qualquer outra configuração específica do provedor ocorra).
 

Exemplos

O exemplo a seguir demonstra o uso da estrutura 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 Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho winsock.h (inclua Winsock2.h)

Confira também

Opções de soquete SOL_SOCKET

Opções de soquete e IOCTLs

Wsastartup

Getsockopt