Compartir a través de


Macro WSAAsyncGetHostByName (wsipv6ok.h)

La función WSAAsyncGetHostByName recupera asincrónicamente la información del host que corresponde a un nombre de host.

Nota La función WSAAsyncGetHostByName no está diseñada para proporcionar resolución paralela de varios nombres. Por lo tanto, las aplicaciones que emiten varias solicitudes no deben esperar que se ejecuten simultáneamente. Como alternativa, las aplicaciones pueden iniciar otro subproceso y usar la función getaddrinfo para resolver nombres de forma independiente de la versión IP. Se insta a los desarrolladores que crean aplicaciones de Windows Sockets 2 a usar la función getaddrinfo para permitir una transición fluida a la compatibilidad con IPv6.
 

Sintaxis

void WSAAsyncGetHostByName(
  [in]   a,
  [in]   b,
  [in]   c,
  [out]  d,
  [in]   e
);

Parámetros

[in] a

Identificador de la ventana que recibirá un mensaje cuando se complete la solicitud asincrónica.

[in] b

Mensaje que se va a recibir cuando se completa la solicitud asincrónica.

[in] c

Puntero al nombre terminado en null del host.

[out] d

Puntero al área de datos para recibir los datos de host . El área de datos debe ser mayor que el tamaño de una estructura hostent porque Windows Sockets usa el área de datos especificada para contener una estructura hostent y todos los datos a los que hacen referencia los miembros de la estructura hostent . Se recomienda un búfer de bytes MAXGETHOSTSTRUCT.

[in] e

Tamaño del área de datos para el parámetro buf , en bytes.

Valor devuelto

None

Observaciones

La función WSAAsyncGetHostByName es una versión asincrónica de gethostbyname y se usa para recuperar el nombre de host y la información de dirección correspondientes a un nombre de host. Windows Sockets inicia la operación y vuelve al autor de la llamada inmediatamente, pasando un identificador de tarea asincrónico opaco que la aplicación puede usar para identificar la operación. Cuando se completa la operación, los resultados (si existen) se copian en el búfer proporcionado por el autor de la llamada y se envía un mensaje a la ventana de la aplicación.

Una vez completada la operación asincrónica, la ventana de la aplicación indicada por el parámetro hWnd recibe el mensaje en el parámetro wMsg . El parámetro wParam contiene el identificador de tarea asincrónico tal y como devuelve la llamada de función original. Los 16 bits altos de lParam contienen cualquier código de error. El código de error puede ser cualquier error tal como se define en Winsock2.h. Un código de error de cero indica que la operación asincrónica se completó correctamente.

Al finalizar correctamente, el búfer especificado en la llamada de función original contiene una estructura de host. Para acceder a los elementos de esta estructura, la dirección del búfer original debe convertirse en un puntero de estructura hostent y acceder a ellos según corresponda.

Si el código de error es WSAENOBUFS, el tamaño del búfer especificado por buflen en la llamada original era demasiado pequeño para contener toda la información resultante. En este caso, los 16 bits bajos de lParam contienen el tamaño del búfer necesario para proporcionar toda la información necesaria. Si la aplicación decide que los datos parciales son inadecuados, puede volver a emitir la llamada de función WSAAsyncGetHostByName con un búfer lo suficientemente grande como para recibir toda la información deseada (es decir, no menor que los 16 bits bajos de lParam).

Windows Sockets usa el búfer especificado para esta función para construir una estructura de host junto con el contenido de las áreas de datos a las que hacen referencia los miembros de la misma estructura hostent . Para evitar el error WSAENOBUFS , la aplicación debe proporcionar un búfer de al menos BYTES MAXGETHOSTSTRUCT (como se define en Winsock2.h).

El código de error y la longitud del búfer deben extraerse de lParam mediante las macros WSAGETASYNCERROR y WSAGETASYNCBUFLEN, definidas en Winsock2.h como:

#include <windows.h>

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

El uso de estas macros maximizará la portabilidad del código fuente de la aplicación.

WSAAsyncGetHostByName está garantizado para resolver la cadena devuelta por una llamada correcta a gethostname.

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]
Plataforma de destino Windows
Encabezado wsipv6ok.h (incluya Winsock2.h, Winsock.h)
Library Ws2_32.lib
Archivo DLL Ws2_32.dll

Consulte también

WSACancelAsyncRequest

Funciones winsock

Referencia de Winsock

getaddrinfo

gethostbyname

getnameinfo

hostent