SetAddrInfoExA-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 SetAddrInfoExA(
[in] PCSTR pName,
[in] PCSTR 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.
[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 |
---|---|
Vor der Verwendung dieser Funktion muss ein erfolgreicher WSAStartup-Aufruf erfolgen. | |
Es ist ein vorübergehender Fehler bei der Namensauflösung aufgetreten. | |
Ein ungültiger Parameter wurde bereitgestellt. Dieser Fehler wird zurückgegeben, wenn einer der reservierten Parameter nicht NULL ist. | |
Es ist nicht genügend Pufferspeicher verfügbar. | |
Es ist ein nicht behebbarer Fehler bei der Namensauflösung aufgetreten. | |
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 |