命名空間服務提供者
命名空間提供者會實作 Winsock 命名空間 SPI 與現有名稱服務原生程式設計介面之間的介面對應,例如 DNS、X.500 或 NetWare Directory Services (NDS) 。 雖然命名空間提供者只支援一個命名空間,但可以安裝指定命名空間的多個提供者。 單一 DLL 也可以建立多個命名空間提供者的實例。 安裝命名空間提供者時,會維護 WSANAMESPACE_INFO 結構的目錄。 應用程式可以使用 WSAEnumNameSpaceProviders 來探索電腦上支援的命名空間。
在 Windows Vista 和更新版本上,會提供增強 WSANAMESPACE_INFOEX 結構和 WSAEnumNameSpaceProvidersEx 函 式。
在 64 位平臺上,會提供類似的 WSCEnumNameSpaceProviders32 和 WSCEnumNameSpaceProvidersEx32 函式來列舉 32 位目錄。
如需詳細資訊 ,請參閱 Winsock 命名空間服務提供者需求 。
舊版 GetXbyY 服務提供者
Windows Sockets 2 完全支援 Windows Sockets 1.1 版中找到的 TCP/IP 特定名稱解析功能。 它會在 SPI 中包含 一組 GetXbyY 函式來執行這項作業。 不過,這組函式的處理方式與 SPI 函式的其餘部分稍有不同。 SPI 中顯示的 GetXbyY 函式前面會加上 GETXBYYSP_,下表摘要說明。
可克利樣式函式
SPI 函式名稱 | 描述 |
---|---|
GETXBYYSP_gethostbyaddr | 提供指定之主機位址的 hostent 結構。 |
GETXBYYSP_gethostbyname | 提供指定主機名稱的 hostent 結構。 |
GETXBYYSP_getprotobyname | 提供指定之通訊協定名稱的 Protoent 結構。 |
GETXBYYSP_getprotobynumber | 提供指定之通訊協定編號的 Protoent 結構。 |
GETXBYYSP_getservbyname | 提供指定之服務 nam.e 的 servicent 結構 |
GETXBYYSP_getservbyport | 在指定的埠為服務提供 服務的服務nt 結構。 |
GETXBYYSP_gethostname | 傳回本機電腦的標準主機名稱。 |
非同步樣式函式
SPI 函式名稱 | 描述 |
---|---|
GETXBYYSP_WSAAsyncGetHostByAddr | 提供指定之主機位址的 hostent 結構。 |
GETXBYYSP_WSAAsyncGetHostByName | 提供指定主機名稱的 hostent 結構。 |
GETXBYYSP_WSAAsyncGetProtoByName | 提供指定之通訊協定名稱的 Protoent 結構。 |
GETXBYYSP_WSAAsyncGetProtoByNumber | 提供指定之通訊協定編號的 Protoent 結構。 |
GETXBYYSP_WSAAsyncGetServByName | 為指定的服務名稱提供 服務 結構。 |
GETXBYYSP_WSAAsyncGetServByPort | 在指定的埠為服務提供 服務的服務nt 結構。 |
GETXBYYSP_WSACancelAsyncRequest | 取消非同步 GetXbyY 作業。 |
SPI 中這些 GetXbyY 函式的語法和語意與 API 規格中所記載的語法和語意完全相同,因此不會在此重複。
Windows Sockets 2 DLL 只允許一個服務提供者提供這些服務。 因此,不需要在啟動時從服務提供者接收的程式資料表中包含這些函式的指標。 在 Windows 環境中,會從下列登錄路徑中找到的值擷取實作這些函式的 DLL 路徑。 此登錄專案預設不存在:
\ HKEY_LOCAL_MACHINE系統\CurrentControlSet\服務\WinSock2\參數\GetXByYLibraryPath
Built-In預設 GetXbyY 服務提供者
預設 GetXbyY 服務提供者已整合到標準 Windows Sockets 2 執行時間元件中。 此預設提供者會實作上述所有函式,因此不需要由任何命名空間提供者實作這些函式。 不過,命名空間提供者可以免費提供任何或全部的函式 (,因此只要將實作這些函式的 DLL 路徑儲存在指定的登錄機碼中,即可覆寫預設值) 。 任何未由具名提供者 DLL 匯出的 GetXbyY 函式都會透過內建預設值提供。 不過請注意,如果提供者選擇提供 任何 GetXbyY 函式的非同步版本,他應該提供所有非同步函式,讓取消作業能夠正常運作。
預設 GetXbyY 服務提供者的目前實作位於Wsock32.dll內。 根據透過主控台建立 TCP/IP 設定的方式,將會使用 DNS 或本機主機檔案進行名稱解析。 使用 DNS 時,預設 GetXbyY 服務提供者會使用標準 Windows Sockets 1.1 API 呼叫來與 DNS 伺服器通訊。 這些交易會使用設定為預設 TCP/IP 堆疊的任何 TCP/IP 堆疊來發生。 不過,有兩個特殊案例值得特別提及。
GETXBYYSP_gethostname的預設實作會從登錄取得本機主機名稱。 這會對應到指派給「我的電腦」的名稱。 GETXBYYSP_gethostbyname和GETXBYYSP_WSAAsyncGetHostByName的預設實作一律會比較提供的主機名稱與本機主機名稱。 如果相符,預設實作會使用私人介面來探查 Microsoft TCP/IP 堆疊,以探索其本機 IP 位址。 因此,為了完全獨立于 Microsoft TCP/IP 堆疊,命名空間提供者必須同時實作GETXBYYSP_gethostbyname和GETXBYYSP_WSAAsyncGetHostByName。