Condividi tramite


Macro WSAAsyncGetHostByAddr (wsipv6ok.h)

La funzione WSAAsyncGetHostByAddr recupera in modo asincrono le informazioni host corrispondenti a un indirizzo.

Nota La funzione WSAAsyncGetHostByAddr non è progettata per fornire una risoluzione parallela di diversi indirizzi. Pertanto, le applicazioni che eseguono diverse richieste non devono essere eseguite simultaneamente. In alternativa, le applicazioni possono avviare un altro thread e usare la funzione getnameinfo per risolvere gli indirizzi in modo agnostico per la versione IP. Gli sviluppatori che creano applicazioni Windows Sockets 2 sono invitati a usare la funzione getnameinfo per abilitare la transizione uniforme alla compatibilità IPv6.
 

Sintassi

void WSAAsyncGetHostByAddr(
  [in]   a,
  [in]   b,
  [in]   c,
  [in]   d,
  [in]   e,
  [out]  f,
  [in]   g
);

Parametri

[in] a

Handle della finestra che riceverà un messaggio al termine della richiesta asincrona.

[in] b

Messaggio da ricevere al termine della richiesta asincrona.

[in] c

Puntatore all'indirizzo di rete per l'host. Gli indirizzi host vengono archiviati nell'ordine di byte di rete.

[in] d

Lunghezza dell'indirizzo, in byte.

[in] e

Tipo dell'indirizzo.

[out] f

Puntatore all'area dati per ricevere i dati hostent . L'area dati deve essere maggiore delle dimensioni di una struttura hostent perché l'area dati viene usata da Windows Sockets per contenere una struttura hostent e tutti i dati a cui fanno riferimento i membri della struttura hostent . È consigliabile un buffer di byte MAXGETHOSTSTRUCT.

[in] g

Dimensioni dell'area dati per il parametro buf , in byte.

Valore restituito

nessuno

Osservazioni

La funzione WSAAsyncGetHostByAddr è una versione asincrona di gethostbyaddr. Viene usato per recuperare il nome host e le informazioni sull'indirizzo che corrispondono a un indirizzo di rete. Windows Socket avvia l'operazione e restituisce immediatamente al chiamante, passando un handle attività opaco e asincrono che l'applicazione può usare per identificare l'operazione. Al termine dell'operazione, i risultati (se presenti) vengono copiati nel buffer fornito dal chiamante e viene inviato un messaggio alla finestra dell'applicazione.

Al termine dell'operazione asincrona, la finestra dell'applicazione indicata dal parametro hWnd riceve il messaggio nel parametro wMsg . Il parametro wParam contiene l'handle di attività asincrono restituito dalla chiamata di funzione originale. I 16 bit elevati di lParam contengono qualsiasi codice di errore. Il codice di errore può essere qualsiasi errore definito in Winsock2.h. Un codice di errore pari a zero indica il completamento dell'operazione asincrona.

Al termine del completamento, il buffer specificato nella chiamata di funzione originale contiene una struttura hostent . Per accedere ai membri di questa struttura, l'indirizzo del buffer originale viene eseguito il cast in un puntatore della struttura host e a cui si accede in base alle esigenze.

Se il codice di errore è WSAENOBUFS, le dimensioni del buffer specificato da buflen nella chiamata originale erano troppo piccole per contenere tutte le informazioni risultanti. In questo caso, i 16 bit bassi di lParam contengono le dimensioni del buffer necessarie per fornire tutte le informazioni necessarie. Se l'applicazione decide che i dati parziali non sono adeguati, è possibile riemettere la chiamata alla funzione WSAAsyncGetHostByAddr con un buffer abbastanza grande per ricevere tutte le informazioni desiderate, ovvero non più piccole rispetto ai bassi 16 bit di lParam.

Il buffer specificato per questa funzione viene usato da Windows Sockets per costruire una struttura insieme al contenuto delle aree dati a cui fanno riferimento i membri della stessa struttura hostent . Per evitare l'errore WSAENOBUFS , l'applicazione deve fornire un buffer di almeno MAXGETHOSTSTRUCT byte (come definito in Winsock2.h).

Il codice di errore e la lunghezza del buffer devono essere estratti dall'lParam usando le macro WSAGETASYNCERROR e WSAGETASYNCBUFLEN, definite in Winsock2.h come:

#include <windows.h>

#define WSAGETASYNCBUFLEN(lParam)           LOWORD(lParam)
#define WSAGETASYNCERROR(lParam)            HIWORD(lParam)

L'uso di queste macro ottimizza la portabilità del codice sorgente per l'applicazione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wsipv6ok.h (includono Winsock2.h, Winsock.h)
Libreria Ws2_32.lib
DLL Ws2_32.dll

Vedi anche

WSACancelAsyncRequest

Funzioni Winsock

Informazioni di riferimento su Winsock

getaddrinfo

gethostbyaddr

getnameinfo

hostent