Freigeben über


WSAAsyncGetHostByAddr-Makro (wsipv6ok.h)

Die WSAAsyncGetHostByAddr-Funktion ruft asynchron Hostinformationen ab, die einer Adresse entsprechen.

Hinweis Die WSAAsyncGetHostByAddr-Funktion ist nicht dafür ausgelegt, eine parallele Auflösung mehrerer Adressen bereitzustellen. Daher sollten Anwendungen, die mehrere Anforderungen ausstellen, nicht erwarten, dass sie gleichzeitig ausgeführt werden. Alternativ können Anwendungen einen anderen Thread starten und die getnameinfo-Funktion verwenden, um Adressen in einer IP-Version agnostisch aufzulösen. Entwickler, die Windows Sockets 2-Anwendungen erstellen, werden aufgefordert, die getnameinfo-Funktion zu verwenden, um einen reibungslosen Übergang zur IPv6-Kompatibilität zu ermöglichen.
 

Syntax

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

Parameter

[in] a

Handle des Fensters, das eine Nachricht empfängt, wenn die asynchrone Anforderung abgeschlossen ist.

[in] b

Nachricht, die empfangen werden soll, wenn die asynchrone Anforderung abgeschlossen ist.

[in] c

Zeiger auf die Netzwerkadresse für den Host. Hostadressen werden in Netzwerkbytereihenfolge gespeichert.

[in] d

Länge der Adresse in Bytes.

[in] e

Typ der Adresse.

[out] f

Zeiger auf den Datenbereich, um die Hostentdaten zu empfangen. Der Datenbereich muss größer als die Größe einer Hostentstruktur sein, da der Datenbereich von Windows Sockets verwendet wird, um eine Hostentstruktur und alle Daten zu enthalten, auf die von Membern der Hostentstruktur verwiesen wird. Ein Puffer von MAXGETHOSTSTRUCT-Bytes wird empfohlen.

[in] g

Größe des Datenbereichs für den buf-Parameter in Bytes.

Rückgabewert

Keine

Bemerkungen

Die WSAAsyncGetHostByAddr-Funktion ist eine asynchrone Version von gethostbyaddr. Es wird verwendet, um den Hostnamen und die Adressinformationen abzurufen, die einer Netzwerkadresse entsprechen. Windows Sockets initiiert den Vorgang und kehrt sofort an den Aufrufer zurück, wobei ein undurchsichtiges, asynchrones Aufgabenhandle zurückgegeben wird, mit dem die Anwendung den Vorgang identifizieren kann. Wenn der Vorgang abgeschlossen ist, werden die Ergebnisse (falls vorhanden) in den vom Aufrufer bereitgestellten Puffer kopiert, und eine Nachricht wird an das Fenster der Anwendung gesendet.

Wenn der asynchrone Vorgang abgeschlossen ist, empfängt das durch den hWnd-Parameter angegebene Anwendungsfenster eine Nachricht im wMsg-Parameter . Der wParam-Parameter enthält das asynchrone Aufgabenhandle, das vom ursprünglichen Funktionsaufruf zurückgegeben wird. Die hohen 16 Bits von lParam enthalten einen beliebigen Fehlercode. Der Fehlercode kann ein beliebiger Fehler sein, der in Winsock2.h definiert ist. Ein Fehlercode von null zeigt den erfolgreichen Abschluss des asynchronen Vorgangs an.

Nach erfolgreicher Fertigstellung enthält der für den ursprünglichen Funktionsaufruf angegebene Puffer eine Hostentstruktur . Um auf die Member dieser Struktur zuzugreifen, wird die ursprüngliche Pufferadresse in einen Hostentenstrukturzeiger umgewandelt und nach Bedarf darauf zugegriffen.

Wenn der Fehlercode WSAENOBUFS ist, war die Größe des Puffers, der von buflen im ursprünglichen Aufruf angegeben wurde, zu klein, um alle resultierenden Informationen zu enthalten. In diesem Fall enthalten die niedrigen 16 Bits von lParam die Größe des Puffers, der zum Bereitstellen aller erforderlichen Informationen erforderlich ist. Wenn die Anwendung entscheidet, dass die Teildaten unzureichend sind, kann sie den WSAAsyncGetHostByAddr-Funktionsaufruf mit einem Puffer erneut ausgeben, der groß genug ist, um alle gewünschten Informationen zu empfangen (d. a. nicht kleiner als die niedrigen 16 Bits von lParam).

Der für diese Funktion angegebene Puffer wird von Windows Sockets verwendet, um eine Struktur zusammen mit dem Inhalt von Datenbereichen zu erstellen, auf die von Mitgliedern derselben Hostentstruktur verwiesen wird. Um den WSAENOBUFS-Fehler zu vermeiden, sollte die Anwendung einen Puffer von mindestens MAXGETHOSTSTRUCT-Bytes bereitstellen (wie in Winsock2.h definiert).

Der Fehlercode und die Pufferlänge sollten mithilfe der Makros WSAGETASYNCERROR und WSAGETASYNCBUFLEN aus dem lParam extrahiert werden, die in Winsock2.h als definiert sind:

#include <windows.h>

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

Die Verwendung dieser Makros maximiert die Portabilität des Quellcodes für die Anwendung.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wsipv6ok.h (einschließlich Winsock2.h, Winsock.h)
Bibliothek Ws2_32.lib
DLL Ws2_32.dll

Weitere Informationen

WSACancelAsyncRequest

Winsock-Funktionen

Winsock-Referenz

getaddrinfo

gethostbyaddr

getnameinfo

hostent