傳輸組態和安裝
為了讓傳輸通訊協定可透過 Windows Socket 存取,它必須正確安裝在系統上,並向 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 的 Applet,可讓已安裝的通訊協定目錄在安裝通訊協議之後以互動方式重新排序。 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 參數中識別。 另請注意,通訊協定鏈結可能不會包含相同分層通訊協定的多個實例。