Struttura WSADATA (winsock.h)

La struttura WSADATA contiene informazioni sull'implementazione di Windows Sockets.

Sintassi

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;

Members

wVersion

Tipo: WORD

La versione della specifica di Windows Sockets che il Ws2_32.dll prevede che il chiamante usi. Il byte di ordine elevato specifica il numero di versione secondaria; il byte con ordine basso specifica il numero di versione principale.

wHighVersion

Tipo: WORD

La versione più recente della specifica di Windows Sockets supportata dall' Ws2_32.dll . Il byte di ordine elevato specifica il numero di versione secondaria; il byte con ordine basso specifica il numero di versione principale.

Si tratta dello stesso valore del membro wVersion quando la versione richiesta nel parametro wVersionRequested passato alla funzione WSAStartup è la versione più alta della specifica Windows Sockets che il Ws2_32.dll può supportare.

iMaxSockets

Tipo: unsigned short

Numero massimo di socket che possono essere aperti. Questo membro deve essere ignorato per Windows Sockets versione 2 e successive.

Il membro iMaxSockets viene mantenuto per la compatibilità con la specifica Windows Sockets 1.1, ma non deve essere usato durante lo sviluppo di nuove applicazioni. Nessun valore singolo può essere appropriato per tutti i provider di servizi sottostanti. L'architettura di Windows Sockets è stata modificata nella versione 2 per supportare più provider e la struttura WSADATA non si applica più allo stack di un singolo fornitore.

iMaxUdpDg

Tipo: unsigned short

Dimensione massima del messaggio del datagram. Questo membro viene ignorato per Windows Sockets versione 2 e successive.

Il membro iMaxUdpDg viene mantenuto per la compatibilità con la specifica Windows Sockets 1.1, ma non deve essere usato durante lo sviluppo di nuove applicazioni. L'architettura di Windows Sockets è stata modificata nella versione 2 per supportare più provider e la struttura WSADATA non si applica più allo stack di un singolo fornitore. Per le dimensioni massime effettive del messaggio specifiche per un determinato provider di servizi Windows Sockets e tipo di socket, le applicazioni devono usare getsockopt per recuperare il valore dell'opzione SO_MAX_MSG_SIZE dopo la creazione di un socket.

lpVendorInfo

Tipo: char FAR*

Puntatore a informazioni specifiche del fornitore. Questo membro deve essere ignorato per Windows Sockets versione 2 e successive.

Il membro lpVendorInfo viene mantenuto per la compatibilità con la specifica Windows Sockets 1.1. L'architettura di Windows Sockets è stata modificata nella versione 2 per supportare più provider e la struttura WSADATA non si applica più allo stack di un singolo fornitore. Le applicazioni che devono accedere alle informazioni di configurazione specifiche del fornitore devono usare getsockopt per recuperare il valore dell'opzione PVD_CONFIG per informazioni specifiche del fornitore.

szDescription[WSADESCRIPTION_LEN + 1]

Tipo: char[WSADESCRIPTION_LEN+1]

Stringa ASCII con terminazione NULL in cui il Ws2_32.dll copia una descrizione dell'implementazione di Windows Sockets. Il testo (fino a 256 caratteri) può contenere qualsiasi carattere, ad eccezione dei caratteri di controllo e formattazione. L'uso più probabile che un'applicazione avrebbe per questo membro consiste nel visualizzarla (possibilmente troncata) in un messaggio di stato.

szSystemStatus[WSASYS_STATUS_LEN + 1]

Tipo: char[WSASYS_STATUS_LEN+1]

Stringa ASCII con terminazione NULL in cui il Ws2_32.dll copia le informazioni sullo stato o sulla configurazione pertinenti. Il Ws2_32.dll deve usare questo parametro solo se le informazioni potrebbero essere utili per l'utente o il personale di supporto. Questo membro non deve essere considerato come estensione del parametro szDescription .

Commenti

La funzione WSAStartup avvia l'uso della DLL di Windows Sockets da un processo. La funzione WSAStartup restituisce un puntatore all'oggetto
Struttura WSADATA nel parametro lpWSAData.

La versione corrente della specifica Windows Sockets restituita nel membro wHighVersion del
La struttura WSADATA è codificata nella versione 2.2 con il numero di versione principale nel byte basso e il numero di versione secondaria nel byte elevato. Questa versione della DLL Winsock corrente, Ws2_32.dll, supporta le applicazioni che richiedono una delle versioni seguenti della specifica di Windows Sockets:

  • 1.0
  • 1,1
  • 2.0
  • 2.1
  • 2.2
A seconda della versione richiesta dall'applicazione, uno dei numeri di versione precedenti è il valore codificato come numero di versione principale nel byte basso e il numero di versione secondaria nel byte elevato restituito nel membro wVersion della struttura WSADATA .
Nota Un'applicazione deve ignorare i membri iMaxsockets, iMaxUdpDg e lpVendorInfo in WSADATA se il valore in wVersion dopo una chiamata a WSAStartup è almeno 2. Ciò è dovuto al fatto che l'architettura di Windows Sockets è stata modificata nella versione 2 per supportare più provider e WSADATA non si applica più allo stack di un singolo fornitore. Vengono introdotte due nuove opzioni socket per fornire informazioni specifiche del provider: SO_MAX_MSG_SIZE (sostituisce il membro iMaxUdpDg ) e PVD_CONFIG (consente l'esecuzione di qualsiasi altra configurazione specifica del provider).
 

Esempio

Nell'esempio seguente viene illustrato l'uso della struttura 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. */




Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione winsock.h (include Winsock2.h)

Vedi anche

Opzioni socket SOL_SOCKET

Opzioni socket e IOCTLs

WSAStartup

getsockopt