Freigeben über


SetAddrInfoExW-Funktion (ws2tcpip.h)

Die SetAddrInfoEx-Funktion registriert oder hebt die Registrierung eines Namens, eines Dienstnamens und zugeordneter Adressen bei einem bestimmten Namespaceanbieter auf.

Syntax

INT WSAAPI SetAddrInfoExW(
  [in]            PCWSTR                             pName,
  [in]            PCWSTR                             pServiceName,
  [in, out]       SOCKET_ADDRESS                     *pAddresses,
  [in]            DWORD                              dwAddressCount,
  [in, optional]  LPBLOB                             lpBlob,
  [in]            DWORD                              dwFlags,
  [in]            DWORD                              dwNameSpace,
  [in, optional]  LPGUID                             lpNspId,
  [in, optional]  timeval                            *timeout,
  [in, optional]  LPOVERLAPPED                       lpOverlapped,
  [in, optional]  LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
  [out, optional] LPHANDLE                           lpNameHandle
);

Parameter

[in] pName

Ein Zeiger auf eine NULL-endende Zeichenfolge, die einen Namen enthält, unter dem Adressen registriert oder abgemeldet werden sollen. Die Interpretation dieses Parameters, die für den Namespaceanbieter spezifisch ist.

[in] pServiceName

Ein Zeiger auf eine optionale NULL-beendete Zeichenfolge, die den Dienstnamen enthält, der dem registrierten Namen zugeordnet ist. Die Interpretation dieses Parameters ist spezifisch für den Namespaceanbieter.

[in, out] pAddresses

Ein Zeiger auf eine optionale Liste von Adressen, die beim Namespaceanbieter registriert werden sollen.

[in] dwAddressCount

Die Anzahl der Adressen, die im pAddresses-Parameter übergeben werden. Wenn dieser Parameter null ist, wird die Registrierung des pName-Parameters beim Namespaceanbieter aufgehoben.

[in, optional] lpBlob

Ein optionaler Zeiger auf Daten, der verwendet wird, um anbieterspezifische Namespaceinformationen festzulegen, die dem pName-Parameter über eine Liste von Adressen hinaus zugeordnet sind. Alle Informationen, die nicht im pAddresses-Parameter übergeben werden können, können im lpBlob-Parameter übergeben werden. Das Format dieser Informationen ist spezifisch für den Namespaceanbieter.

[in] dwFlags

Eine Reihe von Flags, die steuern, wie die Parameter pName und pServiceName beim Namespaceanbieter registriert werden sollen. Die Interpretation dieser Informationen ist spezifisch für den Namespaceanbieter.

[in] dwNameSpace

Ein Namespacebezeichner, der bestimmt, bei welchem Namespaceanbieter diese Informationen registriert werden sollen. Das Übergeben eines bestimmten Namespacebezeichners führt dazu, dass diese Informationen nur bei den Namespaceanbietern registriert werden, die den angegebenen Namespace unterstützen. Wenn Sie NS_ALL angeben, werden die Informationen bei allen installierten und aktiven Namespaceanbietern registriert.

Optionen für den dwNameSpace-Parameter sind in der Winsock2.h-Includedatei aufgeführt. In Windows Vista und höher sind mehrere Namespaceanbieter enthalten. Andere Namespaceanbieter können installiert werden, sodass die folgenden möglichen Werte nur die allgemein verfügbaren sind. Viele andere sind möglich.

Wert Bedeutung
NS_ALL
Alle installierten und aktiven Namespaces.
NS_BTH
Der Bluetooth-Namespace. Dieser Namespacebezeichner wird unter Windows Vista und höher unterstützt.
NS_DNS
Der DNS-Namespace (Domain Name System).
NS_EMAIL
Der E-Mail-Namespace. Dieser Namespacebezeichner wird unter Windows Vista und höher unterstützt.
NS_NLA
Der NLA-Namespace (Network Location Awareness). Dieser Namespacebezeichner wird unter Windows XP und höher unterstützt.
NS_PNRPNAME
Der Peer-to-Peer-Namespace für einen bestimmten Peernamen. Dieser Namespacebezeichner wird unter Windows Vista und höher unterstützt.
NS_PNRPCLOUD
Der Peer-to-Peer-Namespace für eine Sammlung von Peernamen. Dieser Namespacebezeichner wird unter Windows Vista und höher unterstützt.

[in, optional] lpNspId

Ein Zeiger auf eine optionale GUID eines bestimmten Namespaceanbieters, bei dem diese Informationen registriert werden sollen, wenn mehrere Namespaceanbieter unter einem einzelnen Namespace registriert sind, z. B. NS_DNS. Das Übergeben der GUID für einen bestimmten Namespaceanbieter führt dazu, dass die Informationen nur mit dem angegebenen Namespaceanbieter registriert werden. Die WSAEnumNameSpaceProviders-Funktion kann aufgerufen werden, um die GUID für einen Namespaceanbieter abzurufen.

[in, optional] timeout

Ein optionaler Parameter, der angibt, wie lange in Millisekunden auf eine Antwort vom Namespaceanbieter gewartet wird, bevor der Aufruf abgebrochen wird. Dieser Parameter ist derzeit reserviert und muss auf NULL festgelegt werden, da eine Timeoutoption nicht unterstützt wird.

[in, optional] lpOverlapped

Ein optionaler Zeiger auf eine überlappende Struktur, die für asynchrone Vorgänge verwendet wird. Dieser Parameter ist derzeit reserviert und muss auf NULL festgelegt werden, da asynchrone Vorgänge nicht unterstützt werden.

[in, optional] lpCompletionRoutine

Ein optionaler Zeiger auf eine Funktion, die bei erfolgreichem Abschluss für asynchrone Vorgänge aufgerufen werden soll. Dieser Parameter ist derzeit reserviert und muss auf NULL festgelegt werden, da asynchrone Vorgänge nicht unterstützt werden.

[out, optional] lpNameHandle

Ein optionaler Zeiger, der nur für asynchrone Vorgänge verwendet wird. Dieser Parameter ist derzeit reserviert und muss auf NULL festgelegt werden, da asynchrone Vorgänge nicht unterstützt werden.

Rückgabewert

Bei Erfolg gibt SetAddrInfoEx NO_ERROR (0) zurück. Fehler gibt einen Windows Sockets-Fehlercode ungleich null zurück, wie in den Windows Sockets-Fehlercodes zu finden.

Fehlercode Bedeutung
WSANOTINITIALISIERT
Vor der Verwendung dieser Funktion muss ein erfolgreicher WSAStartup-Aufruf erfolgen.
WSATRY_AGAIN
Es ist ein vorübergehender Fehler bei der Namensauflösung aufgetreten.
WSAEINVAL
Ein ungültiger Parameter wurde bereitgestellt. Dieser Fehler wird zurückgegeben, wenn einer der reservierten Parameter nicht NULL ist.
WSAENOBUFS
Es ist nicht genügend Pufferspeicher verfügbar.
WSANO_RECOVERY
Es ist ein nicht behebbarer Fehler bei der Namensauflösung aufgetreten.
WSA_NOT_ENOUGH_MEMORY
Ein Speicherbelegungsfehler ist aufgetreten.

Hinweise

Die SetAddrInfoEx-Funktion stellt eine protokollunabhängige Methode zum Registrieren oder Aufheben der Registrierung eines Namens und einer oder mehrerer Adressen bei einem Namespaceanbieter bereit. Der NS_EMAIL Namespaceanbieter in Windows Vista und höher unterstützt das Registrieren und Aufheben der Registrierung von Adressen. Die Standardmäßigen NS_DNS, NS_PNRPNAME und NS_PNRPNAME Namespaceanbieter unterstützen derzeit keine Namensregistrierung.

Wenn die SetAddrInfoEx-Funktion aufgerufen wird, wobei NS_ALL als dwNameSpace-Parameter und der lpNspId-Parameter nicht angegeben ist, versucht SetAddrInfoEx , den Namen und die zugehörigen Adressen mit allen installierten und aktiven Namespaces zu registrieren oder aufzuheben. Die SetAddrInfoEx-Funktion gibt erfolglos zurück, wenn einer der Namespaceanbieter den Namen erfolgreich registriert oder aufgehoben hat. Es gibt jedoch keinen Hinweis darauf, welcher Namespaceanbieter erfolgreich war oder welche die Anforderung fehlgeschlagen haben.

Wenn UNICODE oder _UNICODE definiert ist, wird SetAddrInfoEx für SetAddrInfoExW definiert, die Unicode-Version dieser Funktion. Die Zeichenfolgenparameter werden für den PWSTR-Datentyp definiert.

Wenn UNICODE oder _UNICODE nicht definiert ist, wird SetAddrInfoEx für SetAddrInfoExA, die ANSI-Version dieser Funktion, definiert. Die Zeichenfolgenparameter sind vom PCSTR-Datentyp .

Informationen, die bei einem Namespaceanbieter registriert sind, können durch Aufrufen der Funktionen GetAddrInfoEx, getaddrinfo oder GetAddrInfoW zurückgegeben werden. Die GetAddrInfoEx-Funktion ist eine erweiterte Version der Funktionen getaddrinfo und GetAddrInfoW .

Wenn Unter Windows Vista und höher SetAddrInfoEx von einem Dienst aufgerufen wird und der Vorgang das Ergebnis eines Benutzerprozesses ist, der den Dienst aufruft, sollte der Dienst die Identität des Benutzers annehmen. Dadurch können Sicherheits- und Routingfächer ordnungsgemäß erzwungen werden.

Windows 8.1 und Windows Server 2012 R2: Die SetAddrInfoExW-Funktion wird für Windows Store-Apps auf Windows 8.1, Windows Server 2012 R2 und höher unterstützt.

Hinweis

Der ws2tcpip.h-Header definiert SetAddrInfoEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch 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
Unterstützte Mindestversion (Client) Windows 8.1, Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile ws2tcpip.h
Bibliothek Ws2_32.lib
DLL Ws2_32.dll

Weitere Informationen

GetAddrInfoEx

GetAddrInfoW

WSAEnumNameSpaceProviders

WSAGetLastError

Windows Sockets-Fehlercodes

getaddrinfo