GetAddressByNameW-Funktion (nspapi.h)
[GetAddressByName- ist nicht mehr für die Verwendung ab Windows Sockets 2 verfügbar. Verwenden Sie stattdessen die in Protocol-Independent Namensauflösungbeschriebenen Funktionen.]
Die GetAddressByName-Funktion fragt einen Namespace oder eine Reihe von Standardnamespaces ab, um Netzwerkadresseninformationen für einen angegebenen Netzwerkdienst abzurufen. Dieser Prozess wird als Dienstnamenauflösung bezeichnet. Ein Netzwerkdienst kann die Funktion auch verwenden, um lokale Adressinformationen abzurufen, die er mit der Bindung Funktion verwenden kann.
Syntax
INT GetAddressByNameW(
[in] DWORD dwNameSpace,
[in] LPGUID lpServiceType,
[in, optional] LPWSTR lpServiceName,
[in, optional] LPINT lpiProtocols,
[in] DWORD dwResolution,
[in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
[out] LPVOID lpCsaddrBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in, out] LPWSTR lpAliasBuffer,
[in, out] LPDWORD lpdwAliasBufferLength
);
Parameter
[in] dwNameSpace
Der Namespace oder der Satz von Standardnamespaces, den das Betriebssystem nach Netzwerkadresseninformationen abfragen soll.
Verwenden Sie eine der folgenden Konstanten, um einen Namespace anzugeben.
Die meisten Aufrufe von GetAddressByName sollten den speziellen Wert NS_DEFAULT verwenden. Auf diese Weise kann ein Client ohne Wissen wissen, welche Namespaces in einem Internetwork verfügbar sind. Der Systemadministrator bestimmt den Namespacezugriff. Namespaces können kommen und gehen, ohne dass der Client die Änderungen beachten muss.
[in] lpServiceType
Ein Zeiger auf einen global eindeutigen Bezeichner (GUID), der den Typ des Netzwerkdiensts angibt. Die Headerdatei "Svcguid.h" enthält Definitionen mehrerer GUID-Diensttypen und Makros zum Arbeiten mit ihnen.
Die Headerdatei "Svcguid.h" wird nicht automatisch von der Winsock2.h-Headerdatei eingeschlossen.
[in, optional] lpServiceName
Ein Zeiger auf eine mit Null beendete Zeichenfolge, die den Dienstnamen eindeutig darstellt. Beispiel: "MY SNA SERVER".
Das Festlegen lpServiceName- auf NULL- entspricht dem Festlegen dwResolution- auf RES_SERVICE. Die Funktion wird im zweiten Modus ausgeführt und erhält die lokale Adresse, an die ein Dienst des angegebenen Typs gebunden werden soll. Die Funktion speichert die lokale Adresse innerhalb des LocalAddr Member der in *lpCsaddrBuffergespeicherten CSADDR_INFO Strukturen.
Wenn dwResolution- auf RES_SERVICE festgelegt ist, ignoriert die Funktion den parameter lpServiceName.
Wenn dwNameSpace- auf NS_DNS festgelegt ist, ist *lpServiceName der Name des Hosts.
[in, optional] lpiProtocols
Ein Zeiger auf ein null-beendetes Array von Protokollbezeichnern. Die Funktion schränkt einen Namensauflösungsversuch auf Namespaceanbieter ein, die diese Protokolle anbieten. Auf diese Weise kann der Aufrufer den Umfang der Suche einschränken.
Wenn lpiProtocols auf NULL-festgelegt ist, ruft die Funktion Informationen zu allen verfügbaren Protokollen ab.
[in] dwResolution
Eine Reihe von Bitkennzeichnungen, die Aspekte des Prozesses zur Auflösung von Dienstnamen angeben. Die folgenden Bitkennzeichnungen werden definiert.
[in, optional] lpServiceAsyncInfo
Reserviert für die zukünftige Nutzung; muss auf NULL-festgelegt werden.
[out] lpCsaddrBuffer
Ein Zeiger auf einen Puffer, um eine oder mehrere CSADDR_INFO Datenstrukturen zu empfangen. Die Anzahl der in den Puffer geschriebenen Strukturen hängt von der Menge der Informationen ab, die im Lösungsversuch gefunden wurden. Sie sollten davon ausgehen, dass mehrere Strukturen geschrieben werden, obwohl in vielen Fällen nur eine vorhanden sein wird.
[in, out] lpdwBufferLength
Ein Zeiger auf eine Variable, die bei eingabe die Größe des Puffers in Bytes angibt, auf den lpCsaddrBufferverweist.
Bei der Ausgabe enthält diese Variable die Gesamtanzahl der Bytes, die zum Speichern des Arrays von CSADDR_INFO Strukturen erforderlich sind. Wenn dieser Wert kleiner oder gleich dem Eingabewert von *lpdwBufferLengthist und die Funktion erfolgreich ist, ist dies die Anzahl der Bytes, die tatsächlich im Puffer gespeichert sind. Wenn dieser Wert größer als der Eingabewert von *lpdwBufferLengthist, war der Puffer zu klein, und der Ausgabewert von *lpdwBufferLength ist die minimale erforderliche Puffergröße.
[in, out] lpAliasBuffer
Ein Zeiger auf einen Puffer zum Empfangen von Aliasinformationen für den Netzwerkdienst.
Wenn ein Namespace Aliase unterstützt, speichert die Funktion ein Array von Zeichenfolgen mit nullen beendeten Namen in dem Puffer, auf den durch lpAliasBufferverwiesen wird. Am Ende der Liste befindet sich ein doppelter Null-Terminator. Der Vorname im Array ist der primäre Name des Diensts. Folgende Namen sind Aliase. Ein Beispiel für einen Namespace, der Aliase unterstützt, ist DNS.
Wenn ein Namespace aliase nicht unterstützt, speichert er einen doppelten Null-Terminator im Puffer.
Dieser Parameter ist optional und kann auf NULL-festgelegt werden.
[in, out] lpdwAliasBufferLength
Ein Zeiger auf eine Variable, die bei eingabe die Größe des Puffers in Elementen (Zeichen) angibt, auf die durch lpAliasBufferverwiesen wird.
Bei der Ausgabe enthält diese Variable die Gesamtanzahl der Elemente (Zeichen), die zum Speichern des Arrays von Namenszeichenfolgen erforderlich sind. Wenn dieser Wert kleiner oder gleich dem Eingabewert von *lpdwAliasBufferLengthist und die Funktion erfolgreich ist, ist dies die Anzahl der Elemente, die tatsächlich im Puffer gespeichert sind. Wenn dieser Wert größer als der Eingabewert von *lpdwAliasBufferLengthist, war der Puffer zu klein, und der Ausgabewert von *lpdwAliasBufferLength ist die minimale erforderliche Puffergröße.
Wenn lpAliasBufferNULList, ist lpdwAliasBufferLength bedeutungslos und kann auch NULL-sein.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Anzahl der CSADDR_INFO Datenstrukturen, die in den Puffer geschrieben wurden, auf lpCsaddrBufferverweist.
Wenn die Funktion fehlschlägt, ist der Rückgabewert SOCKET_ERROR( –1). Rufen Sie zum Abrufen erweiterter Fehlerinformationen GetLastErrorauf, der den folgenden erweiterten Fehlerwert zurückgibt.
Fehlercode | Bedeutung |
---|---|
|
Der Puffer, auf den lpCsaddrBuffer verweist, war zu klein, um alle relevanten CSADDR_INFO Strukturen zu erhalten. Rufen Sie die Funktion mit einem Puffer mindestens so groß auf, wie der in *lpdwBufferLengthzurückgegebene Wert. |
Bemerkungen
Diese Funktion ist eine leistungsfähigere Version der gethostbyname-Funktion. Die GetAddressByName--Funktion funktioniert mit mehreren Namendiensten.
Mit der GetAddressByName--Funktion kann ein Client eine Windows Sockets-Adresse für einen Netzwerkdienst abrufen. Der Client gibt den zugehörigen Diensttyp und Dienstnamen an.
Viele Namendienste unterstützen ein Standardpräfix oder Suffix, das der Namensdienstanbieter beim Auflösen von Dienstnamen berücksichtigt. Wenn beispielsweise im DNS-Namespace eine Domäne mit dem Namen "nt.microsoft.com" und "ftp millikan" als Eingabe bereitgestellt wird, kann die DNS-Software "millikan" nicht auflösen, aber erfolgreich "millikan.nt.microsoft.com" auflösen.
Beachten Sie, dass die GetAddressByName-funktion auf zwei Arten nach einer Dienstadresse suchen kann: innerhalb eines bestimmten Namespaces oder innerhalb einer Reihe von Standardnamespaces. Mithilfe eines Standardnamespaces kann ein Administrator angeben, dass bestimmte Namespaces nur nach Dienstadressen durchsucht werden, wenn er durch den Namen angegeben wird. Ein Administrator oder Namespace – Das Setupprogramm kann auch die Sortierung von Namespacesuchen steuern.
Anmerkung
Der nspapi.h-Header definiert GetAddressByName als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | nspapi.h |
Library | Mswsock.lib |
DLL- | Mswsock.dll |