傳輸組態和安裝
為了讓傳輸通訊協定能夠透過 Windows 通訊端存取,它必須正確安裝在系統上,並向 Windows Sockets 註冊。 叫用廠商的安裝程式來安裝傳輸服務提供者時,必須將組態資訊新增至組態資料庫,以提供與服務提供者相關的Ws2_32.dll必要資訊。 Ws2_32.dll匯出數個安裝函式 WSCInstallProvider 和 WSCInstallProviderAndChains,讓廠商的安裝程式提供要安裝之服務提供者的相關資訊。 這項資訊包括服務提供者 DLL 的名稱和路徑,以及此提供者可支援的 WSAPROTOCOL_INFO 結構清單。 Ws2_32.dll也提供一個函式 WSCDeinstallProvider,讓廠商的取消安裝程式從Ws2_32.dll維護的組態資料庫中移除所有相關資訊。 此組態資訊的確切位置和格式對Ws2_32.dll是私用的,而且只能由上述函式操作。
在 64 位平臺上,有類似的函式可在 32 位和 64 位目錄上運作。 這些函式包括 WSCInstallProvider64_32、 WSCInstallProviderAndChains64_32和 WSCDeinstallProvider32。
一開始安裝傳輸服務提供者的順序會控管它們透過服務提供者介面上的 WSCEnumProtocols 和 WSCEnumProtocols32 列舉的順序,或透過應用程式介面上的 WSAEnumProtocols 來列舉的順序。 更重要的是,此順序也會控管當用戶端根據其位址系列、類型和通訊協定識別碼要求建立通訊端時,會考慮通訊協定和服務提供者的順序。 Windows Sockets 2 包含稱為 Sporder.exe 的小程式,可讓已安裝的通訊協定目錄在安裝通訊協定之後以互動方式重新排序。 Windows Sockets 2 也包含輔助 DLL Sporder.dll,可匯出用於重新排序通訊協定的程式性介面。 此程式介面是由稱為 WSCWriteProviderOrder的單一程式所組成。
安裝分層通訊協定和通訊協定鏈結
要安裝之每個通訊協定所提供的 WSAPROTOCOL_INFO 結構會指出通訊協定是基底通訊協定、分層通訊協定或通訊協定鏈結。 ProtocolChain.ChainLen參數的值會解譯如下表所示。
值 | 意義 |
---|---|
0 | 分層通訊協定。 |
1 | 基底通訊協定 (或鏈結,且只有一個元件) 。 |
>1 | 通訊協定鏈結。 |
只有在成功安裝所有組成元件之後,才能安裝通訊協定鏈結, (基底通訊協定和分層通訊協定) 。 通訊協定鏈 結的WSAPROTOCOL_INFO 結構會使用 ProtocolChain 參數來描述鏈結的長度和每個元件的身分識別。 組成鏈結的個別通訊協定會依序列在 ProtocolChain.ChainEntries 陣列中,陣列的第零個元素對應至第一個分層提供者。 通訊協定是由 其 CatalogEntryID 值所識別,這些值是由通訊協定安裝期間Ws2_32.dll指派,而且可以在每個通訊協定 的 WSAPROTOCOL_INFO 結構中找到。
應選擇通訊協定鏈 結WSAPROTOCOL_INFO 結構中其餘參數的值,以反映最能描述整個通訊協定鏈結的屬性和識別碼。 選取這些值時,開發人員應該記住,只有兩個端點都已安裝相容的通訊協定鏈結,而且應用程式必須能夠辨識對應的WSAPROTOCOL_INFO結構時,才能透過通訊協定鏈 結 進行通訊。
安裝基底通訊協定時,不需要在 ProtocolChain.ChainEntries 陣列中建立任何專案。 隱含地瞭解,此鏈結的唯一元件已在相同WSAPROTOCOL_INFO結構的CatalogEntryID參數中識別。 另請注意,通訊協定鏈結可能不會包含相同分層通訊協定的多個實例。