Namespacedienstanbieter
Ein Namespaceanbieter implementiert eine Schnittstellenzuordnung zwischen dem Winsock-Namespace SPI und der systemeigenen programmgesteuerten Schnittstelle eines vorhandenen Namensdiensts wie DNS, X.500 oder NetWare Directory Services (NDS). Während ein Namespaceanbieter genau einen Namespace unterstützt, ist es möglich, dass mehrere Anbieter für einen bestimmten Namespace installiert werden. Es ist auch möglich, dass eine einzelne DLL eine instance mehrerer Namespaceanbieter erstellt. Wenn Namespaceanbieter installiert sind, wird ein Katalog mit WSANAMESPACE_INFO Strukturen verwaltet. Eine Anwendung kann WSAEnumNameSpaceProviders verwenden, um zu ermitteln, welche Namespaces auf einem Computer unterstützt werden.
Unter Windows Vista und höher werden eine erweiterte WSANAMESPACE_INFOEX-Struktur und die WSAEnumNameSpaceProvidersEx-Funktion bereitgestellt.
Auf 64-Bit-Plattformen werden ähnliche Funktionen wie WSCEnumNameSpaceProviders32 und WSCEnumNameSpaceProvidersEx32 bereitgestellt, um den 32-Bit-Katalog aufzulisten.
Ausführliche Informationen finden Sie unter Anforderungen des Winsock-Namespace-Dienstanbieters .
Legacy-GetXbyy-Dienstanbieter
Windows Sockets 2 unterstützt vollständig die TCP/IP-spezifischen Namensauflösungsfunktionen in Windows Sockets Version 1.1. Hierzu werden die GetXbyY-Funktionen in den SPI eingeschlossen. Die Behandlung dieses Funktionssatzes unterscheidet sich jedoch etwas von den restlichen SPI-Funktionen. Die im SPI angezeigten GetXbyY-Funktionen sind mit GETXBYYSP_ vorangestellt und in der folgenden Tabelle zusammengefasst.
Funktionen im Berkeley-Stil
SPI-Funktionsname | BESCHREIBUNG |
---|---|
GETXBYYSP_gethostbyaddr | Stellt eine Hostentstruktur für die angegebene Hostadresse bereit. |
GETXBYYSP_gethostbyname | Stellt eine Hostentstruktur für den angegebenen Hostnamen bereit. |
GETXBYYSP_getprotobyname | Stellt eine Protoensstruktur für den angegebenen Protokollnamen bereit. |
GETXBYYSP_getprotobynumber | Stellt eine Protoensstruktur für die angegebene Protokollnummer bereit. |
GETXBYYSP_getservbyname | Liefert eine Servicestruktur für den angegebenen Dienst nam.e |
GETXBYYSP_getservbyport | Stellt eine Servicestruktur für den Dienst am angegebenen Port bereit. |
GETXBYYSP_gethostname | Gibt den Standardhostnamen für den lokalen Computer zurück. |
Asynchrone Stilfunktionen
SPI-Funktionsname | BESCHREIBUNG |
---|---|
GETXBYYSP_WSAAsyncGetHostByAddr | Stellt eine Hostentstruktur für die angegebene Hostadresse bereit. |
GETXBYYSP_WSAAsyncGetHostByName | Stellt eine Hostentstruktur für den angegebenen Hostnamen bereit. |
GETXBYYSP_WSAAsyncGetProtoByName | Stellt eine Protoensstruktur für den angegebenen Protokollnamen bereit. |
GETXBYYSP_WSAAsyncGetProtoByNumber | Stellt eine Protoensstruktur für die angegebene Protokollnummer bereit. |
GETXBYYSP_WSAAsyncGetServByName | Stellt eine Dienstdienststruktur für den angegebenen Dienstnamen bereit. |
GETXBYYSP_WSAAsyncGetServByPort | Stellt eine Servicestruktur für den Dienst am angegebenen Port bereit. |
GETXBYYSP_WSACancelAsyncRequest | Bricht einen asynchronen GetXbyY-Vorgang ab. |
Syntax und Semantik dieser GetXbyY-Funktionen im SPI entsprechen genau den in der API-Spezifikation dokumentierten Funktionen und werden daher hier nicht wiederholt.
Die Windows Sockets 2-DLL ermöglicht es genau einem Dienstanbieter, diese Dienste anzubieten. Daher müssen keine Zeiger auf diese Funktionen in die Prozedurtabelle aufgenommen werden, die vom Dienstanbieter beim Start empfangen wurde. In Windows-Umgebungen wird der Pfad zur DLL, die diese Funktionen implementiert, aus dem Wert im folgenden Registrierungspfad abgerufen. Dieser Registrierungseintrag ist standardmäßig nicht vorhanden:
HKEY_LOCAL_MACHINE\System\Currentcontrolset\Dienstleistungen\WinSock2\Parameter\GetXByYLibraryPath
Built-In GetXbyY-Standarddienstanbieter
Ein Standardmäßiger GetXbyY-Dienstanbieter ist in die Standardmäßigen Windows Sockets 2-Laufzeitkomponenten integriert. Dieser Standardanbieter implementiert alle oben genannten Funktionen, daher ist es nicht erforderlich, dass diese Funktionen von einem Namespaceanbieter implementiert werden. Ein Namespaceanbieter kann jedoch eine oder alle dieser Funktionen bereitstellen (und somit die Standardwerte überschreiben), indem er einfach die Zeichenfolge speichert, die den Pfad zur DLL darstellt, die diese Funktionen im angegebenen Registrierungsschlüssel implementiert. Alle GetXbyY-Funktionen , die nicht von der benannten Anbieter-DLL exportiert werden, werden über die integrierten Standardwerte bereitgestellt. Beachten Sie jedoch, dass ein Anbieter, wenn er sich für die Bereitstellung einer der asynchronen Versionen der GetXbyY-Funktionen entscheidet, alle asynchronen Funktionen bereitstellen sollte, damit der Abbruchvorgang ordnungsgemäß funktioniert.
Die aktuelle Implementierung des GetXbyY-Standarddienstanbieters befindet sich innerhalb des Wsock32.dll. Je nachdem, wie die TCP/IP-Einstellungen über Systemsteuerung eingerichtet wurden, erfolgt die Namensauflösung entweder mithilfe von DNS- oder lokalen Hostdateien. Wenn DNS verwendet wird, verwendet der Standardmäßige GetXbyY-Dienstanbieter standardmäßige Windows Sockets 1.1-API-Aufrufe, um mit dem DNS-Server zu kommunizieren. Diese Transaktionen erfolgen mit dem TCP/IP-Stapel, der als TCP/IP-Standardstapel konfiguriert ist. Zwei Sonderfälle verdienen jedoch besondere Erwähnung.
Die Standardimplementierung von GETXBYYSP_gethostname ruft den lokalen Hostnamen aus der Registrierung ab. Dies entspricht dem Namen, der "Mein Computer" zugewiesen ist. Die Standardimplementierung von GETXBYYSP_gethostbyname und GETXBYYSP_WSAAsyncGetHostByName vergleicht immer den angegebenen Hostnamen mit dem lokalen Hostnamen. Wenn sie übereinstimmen, verwendet die Standardimplementierung eine private Schnittstelle, um den Microsoft TCP/IP-Stapel zu testen, um die lokale IP-Adresse zu ermitteln. Daher muss ein Namespaceanbieter sowohl GETXBYYSP_gethostbyname als auch GETXBYYSP_WSAAsyncGetHostByName implementieren, um vollständig unabhängig vom Tcp/IP-Stapel von Microsoft zu sein.