Namespace-Dienstanbieter
Ein Namespaceanbieter implementiert eine Schnittstellenzuordnung zwischen der Winsock-Namespace-SPI und der nativen programmgesteuerten Schnittstelle eines vorhandenen Namensdiensts wie DNS, X.500 oder NetWare-Verzeichnisdienste (NDS). Ein Namespaceanbieter unterstützt zwar genau einen Namespace, es ist jedoch möglich, dass mehrere Anbieter für einen bestimmten Namespace installiert werden. Es ist auch möglich, dass eine einzelne DLL eine Instanz von mehreren Namespaceanbietern erstellt. Wenn Namespaceanbieter installiert werden, wird ein Katalog von WSANAMESPACE _ INFO-Strukturen verwaltet. Eine Anwendung kann WSAEnumNameSpaceProviders verwenden, um zu erfahren, welche Namespaces auf einem Computer unterstützt werden.
Unter Windows Vista und höher werden eine erweiterte WSANAMESPACE _ INFOEX-Struktur und eine WSAEnumNameSpaceProvidersEx-Funktion bereitgestellt.
Auf 64-Bit-Plattformen werden ähnliche WSCEnumNameSpaceProviders32- und WSCEnumNameSpaceProvidersEx32-Funktionen bereitgestellt, um den 32-Bit-Katalog zu aufzählen.
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ösungsmöglichkeiten in Windows Sockets Version 1.1. Hierzu wird der Satz von GetXbyY-Funktionen in die SPI-Funktion ein- und aus dem Spi-Bereich endiert. Die Behandlung dieses Funktionsumfangs ist jedoch etwas anders als die restlichen SPI-Funktionen. Den in der SPI angezeigten GetXbyY-Funktionen wird GETXBYYSP vorgefertigt, und _ sie werden in der folgenden Tabelle zusammengefasst.
Stilfunktionen in Berkeley
| SPI-Funktionsname | BESCHREIBUNG |
|---|---|
| GETXBYYSP _ gethostbyaddr | Stellt eine Hostent-Struktur für die angegebene Hostadresse zur |
| GETXBYYSP _ gethostbyname | Stellt eine hostente -Struktur für den angegebenen Hostnamen zur |
| GETXBYYSP _ getprotobyname | Stellt eine protoent-Struktur für den angegebenen Protokollnamen zur |
| GETXBYYSP _ getprotobynumber | Stellt eine protoent-Struktur für die angegebene Protokollnummer zur |
| GETXBYYSP _ getservbyname | Stellt eine Servent-Struktur für den angegebenen Dienst nam.e |
| GETXBYYSP _ getservbyport | Stellt eine servent-Struktur für den Dienst am angegebenen Port zur Verfügung. |
| GETXBYYSP _ gethostname | Gibt den Standardhostnamen für den lokalen Computer zurück. |
Asynchrone Stilfunktionen
| SPI-Funktionsname | BESCHREIBUNG |
|---|---|
| GETXBYYSP _ WSAAsyncGetHostByAddr | Stellt eine Hostent-Struktur für die angegebene Hostadresse zur |
| GETXBYYSP _ WSAAsyncGetHostByName | Stellt eine hostente -Struktur für den angegebenen Hostnamen zur |
| GETXBYYSP _ WSAAsyncGetProtoByName | Stellt eine protoent-Struktur für den angegebenen Protokollnamen zur |
| GETXBYYSP _ WSAAsyncGetProtoByNumber | Stellt eine protoent-Struktur für die angegebene Protokollnummer zur |
| GETXBYYSP _ WSAAsyncGetServByName | Stellt eine Servent-Struktur für den angegebenen Dienstnamen zur Verfügung. |
| GETXBYYSP _ WSAAsyncGetServByPort | Stellt eine servent-Struktur für den Dienst am angegebenen Port zur Verfügung. |
| GETXBYYSP _ WSACancelAsyncRequest | Bricht einen asynchronen GetXbyY-Vorgang ab. |
Die Syntax und Semantik dieser GetXbyY-Funktionen im SPI sind identisch mit den in der API-Spezifikation dokumentierten Funktionen und werden daher hier nicht wiederholt.
Die Windows Sockets 2-DLL ermöglicht genau einem Dienstanbieter, diese Dienste anzubieten. Daher müssen keine Zeiger auf diese Funktionen in die Prozedurtabelle aufgenommen werden, die beim Start von Dienstanbietern empfangen wird. In Windows-Umgebungen wird der Pfad zur DLL, die diese Funktionen implementiert, aus dem Wert abgerufen, der im folgenden Registrierungspfad gefunden wird. Dieser Registrierungseintrag ist standardmäßig nicht vorhanden:
HKEY _ LOCAL _ MACHINE \ System \ CurrentControlSet \ Services \ WinSock2 \ Parameters \ GetXByYLibraryPath
Built-In Standard-GetXbyy-Dienstanbieter
Ein Standardmäßiger GetXbyY-Dienstanbieter ist in die 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 der Pfad zu der DLL ist, 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 alle asynchronen Funktionen bereitstellen sollte, damit der Abbrichtvorgang ordnungsgemäß funktioniert, wenn er sich dafür auswählt, eine der asynchronen Versionen der GetXbyY-Funktionen zur Verfügung zu stellen.
Die aktuelle Implementierung des Standardmäßigen GetXbyY-Dienstanbieters befindet sich im Wsock32.dll. Je nachdem, wie die TCP/IP-Einstellungen über Systemsteuerung eingerichtet wurden, erfolgt die Namensauflösung mithilfe von DNS- oder lokalen Hostdateien. Wenn DNS verwendet wird, verwendet der Standardmäßige GetXbyY-Dienstanbieter standardmäßige Windows Sockets 1.1-API-Aufrufe für die Kommunikation mit dem DNS-Server. Diese Transaktionen erfolgen mithilfe des TCP/IP-Stapels, der als TCP/IP-Standardstapel konfiguriert ist. Zwei Sonderfälle sind jedoch besonders erwähnt.
Die Standardimplementierung von GETXBYYSP _ gethostname erhält den lokalen Hostnamen aus der Registrierung. Dies entspricht dem Namen, der "Arbeitsplatz" 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 prüfen, um seine lokale IP-Adresse zu finden. Um vollständig unabhängig vom Microsoft TCP/IP-Stapel zu sein, muss ein Namespaceanbieter daher sowohl GETXBYYSP gethostbyname als auch _ GETXBYYSP _ WSAAsyncGetHostByName implementieren.