命名空間服務提供者
命名空間提供者會實作 Winsock 命名空間 SPI 與現有名稱服務的原生程式設計介面之間的介面對應,例如 DNS、X.500 或 NetWare 目錄服務 (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 | 為指定的主機位址提供 主機傳送 結構。 |
GETXBYYSP_gethostbyname | 為指定的主機名提供 主機 結構。 |
GETXBYYSP_getprotobyname | 提供指定通訊協定名稱的 原 結構。 |
GETXBYYSP_getprotobynumber | 為指定的通訊協定編號提供 原 結構。 |
GETXBYYSP_getservbyname | 為指定的服務 nam.e 提供 服務 結構 |
GETXBYYSP_getservbyport | 為指定埠的服務提供 服務 結構。 |
GETXBYYSP_gethostname | 傳回本機計算機的標準主機名。 |
異步樣式函式
SPI 函式名稱 | 描述 |
---|---|
GETXBYYSP_WSAAsyncGetHostByAddr | 為指定的主機位址提供 主機傳送 結構。 |
GETXBYYSP_WSAAsyncGetHostByName | 為指定的主機名提供 主機 結構。 |
GETXBYYSP_WSAAsyncGetProtoByName | 提供指定通訊協定名稱的 原 結構。 |
GETXBYYSP_WSAAsyncGetProtoByNumber | 為指定的通訊協定編號提供 原 結構。 |
GETXBYYSP_WSAAsyncGetServByName | 為指定的服務名稱提供 服務 結構。 |
GETXBYYSP_WSAAsyncGetServByPort | 為指定埠的服務提供 服務 結構。 |
GETXBYYSP_WSACancelAsyncRequest | 取消異步 GetXbyY 作業。 |
SPI 中這些 GetXbyY 函式的語法和語意與 API 規格中所記載的語法和語意完全相同,因此,這裡不會重複。
Windows Sockets 2 DLL 只允許一個服務提供者提供這些服務。 因此,不需要在啟動時從服務提供者收到的程序數據表中包含這些函式的指標。 在 Windows 環境中,會從下列登錄路徑中找到的值擷取實作這些函式的 DLL 路徑。 此登入項目預設不存在:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\parameters\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。