WSAAsyncGetHostByName, macro (wsipv6ok.h)
La fonction WSAAsyncGetHostByName récupère de façon asynchrone les informations sur l’hôte qui correspondent à un nom d’hôte.
Syntaxe
void WSAAsyncGetHostByName(
[in] a,
[in] b,
[in] c,
[out] d,
[in] e
);
Paramètres
[in] a
Handle de la fenêtre qui recevra un message à la fin de la demande asynchrone.
[in] b
Message à recevoir à la fin de la demande asynchrone.
[in] c
Pointeur vers le nom terminé par null de l’hôte.
[out] d
Pointeur vers la zone de données pour recevoir les données hostent . La zone de données doit être supérieure à la taille d’une structure hostente , car la zone de données spécifiée est utilisée par les sockets Windows pour contenir une structure hostente et toutes les données référencées par les membres de la structure hostent . Une mémoire tampon d’octets MAXGETHOSTSTRUCT est recommandée.
[in] e
Taille de la zone de données pour le paramètre buf , en octets.
Valeur de retour
None
Remarques
La fonction WSAAsyncGetHostByName est une version asynchrone de gethostbyname et est utilisée pour récupérer les informations de nom d’hôte et d’adresse correspondant à un nom d’hôte. Windows Sockets lance l’opération et retourne immédiatement à l’appelant, en transmettant un handle de tâche asynchrone opaque que l’application peut utiliser pour identifier l’opération. Une fois l’opération terminée, les résultats (le cas échéant) sont copiés dans la mémoire tampon fournie par l’appelant et un message est envoyé à la fenêtre de l’application.
Une fois l’opération asynchrone terminée, la fenêtre d’application indiquée par le paramètre hWnd reçoit un message dans le paramètre wMsg . Le paramètre wParam contient le handle de tâche asynchrone tel que retourné par l’appel de fonction d’origine. Les 16 bits élevés de lParam contiennent un code d’erreur. Le code d’erreur peut être n’importe quelle erreur, comme défini dans Winsock2.h. Un code d’erreur égal à zéro indique la réussite de l’opération asynchrone.
Une fois l’exécution réussie, la mémoire tampon spécifiée pour l’appel de fonction d’origine contient une structure hostente . Pour accéder aux éléments de cette structure, l’adresse de la mémoire tampon d’origine doit être convertie en pointeur de structure hôte et accessible comme il convient.
Si le code d’erreur est WSAENOBUFS, la taille de la mémoire tampon spécifiée par buflen dans l’appel d’origine était trop petite pour contenir toutes les informations obtenues. Dans ce cas, les 16 bits faibles de lParam contiennent la taille de la mémoire tampon requise pour fournir toutes les informations nécessaires. Si l’application décide que les données partielles sont inadéquates, elle peut réémettre l’appel de fonction WSAAAsyncGetHostByName avec une mémoire tampon suffisamment grande pour recevoir toutes les informations souhaitées (c’est-à-dire, pas moins de 16 bits de lParam).
La mémoire tampon spécifiée pour cette fonction est utilisée par les sockets Windows pour construire une structure hostente avec le contenu des zones de données référencées par les membres de la même structure hôte . Pour éviter l’erreur WSAENOBUFS , l’application doit fournir une mémoire tampon d’au moins MAXGETHOSTSTRUCT octets (comme défini dans Winsock2.h).
Le code d’erreur et la longueur de la mémoire tampon doivent être extraits de l’objet lParam à l’aide des macros WSAGETASYNCERROR et WSAGETASYNCBUFLEN, définies dans Winsock2.h comme suit :
#include <windows.h>
#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
L’utilisation de ces macros optimise la portabilité du code source pour l’application.
WSAAsyncGetHostByName est garanti pour résoudre la chaîne retournée par un appel réussi à gethostname.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wsipv6ok.h (inclure Winsock2.h, Winsock.h) |
Bibliothèque | Ws2_32.lib |
DLL | Ws2_32.dll |