Macro WSAAsyncGetHostByName (wsipv6ok.h)
A função WSAAsyncGetHostByName recupera de forma assíncrona as informações do host que correspondem a um nome de host.
Sintaxe
void WSAAsyncGetHostByName(
[in] a,
[in] b,
[in] c,
[out] d,
[in] e
);
Parâmetros
[in] a
Identificador da janela que receberá uma mensagem quando a solicitação assíncrona for concluída.
[in] b
Mensagem a ser recebida quando a solicitação assíncrona for concluída.
[in] c
Ponteiro para o nome terminado em nulo do host.
[out] d
Ponteiro para a área de dados para receber os dados do cliente host . A área de dados deve ser maior do que o tamanho de uma estrutura de hostent porque a área de dados especificada é usada pelo Windows Sockets para conter uma estrutura de hostent e todos os dados referenciados por membros da estrutura de hostent . Um buffer de bytes MAXGETHOSTSTRUCT é recomendado.
[in] e
Tamanho da área de dados para o parâmetro buf , em bytes.
Retornar valor
Nenhum
Comentários
A função WSAAsyncGetHostByName é uma versão assíncrona de gethostbyname e é usada para recuperar informações de nome e endereço do host correspondentes a um nome de host. O Windows Sockets inicia a operação e retorna ao chamador imediatamente, passando um identificador de tarefa assíncrono opaco que o aplicativo pode usar para identificar a operação. Quando a operação é concluída, os resultados (se houver) são copiados para o buffer fornecido pelo chamador e uma mensagem é enviada para a janela do aplicativo.
Quando a operação assíncrona é concluída, a janela do aplicativo indicada pelo parâmetro hWnd recebe a mensagem no parâmetro wMsg . O parâmetro wParam contém o identificador de tarefa assíncrona, conforme retornado pela chamada de função original. Os 16 bits altos de lParam contêm qualquer código de erro. O código de erro pode ser qualquer erro, conforme definido em Winsock2.h. Um código de erro zero indica a conclusão bem-sucedida da operação assíncrona.
Após a conclusão bem-sucedida, o buffer especificado para a chamada de função original contém uma estrutura de hostent . Para acessar os elementos dessa estrutura, o endereço do buffer original deve ser convertido em um ponteiro da estrutura do hostent e acessado conforme apropriado.
Se o código de erro for WSAENOBUFS, o tamanho do buffer especificado por buflen na chamada original era muito pequeno para conter todas as informações resultantes. Nesse caso, os 16 bits baixos de lParam contêm o tamanho do buffer necessário para fornecer todas as informações necessárias. Se o aplicativo decidir que os dados parciais são inadequados, ele poderá reemiter a chamada da função WSAAsyncGetHostByName com um buffer grande o suficiente para receber todas as informações desejadas (ou seja, não menor que os 16 bits baixos de lParam).
O buffer especificado para essa função é usado pelo Windows Sockets para construir uma estrutura de hostent junto com o conteúdo das áreas de dados referenciadas por membros da mesma estrutura de hostent . Para evitar o erro WSAENOBUFS , o aplicativo deve fornecer um buffer de pelo menos bytes MAXGETHOSTSTRUCT (conforme definido em Winsock2.h).
O código de erro e o comprimento do buffer devem ser extraídos do lParam usando as macros WSAGETASYNCERROR e WSAGETASYNCBUFLEN, definidas em Winsock2.h como:
#include <windows.h>
#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
O uso dessas macros maximizará a portabilidade do código-fonte para o aplicativo.
O WSAAsyncGetHostByName tem a garantia de resolve a cadeia de caracteres retornada por uma chamada bem-sucedida para gethostname.
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] |
Plataforma de Destino | Windows |
Cabeçalho | wsipv6ok.h (inclua Winsock2.h, Winsock.h) |
Biblioteca | Ws2_32.lib |
DLL | Ws2_32.dll |