Конфигурация транспорта и установка

Чтобы транспортный протокол был доступен через сокеты Windows, он должен быть правильно установлен в системе и зарегистрирован в сокетах Windows. При установке поставщика услуг транспорта путем вызова программы установки поставщика необходимо добавить сведения о конфигурации в базу данных конфигурации, чтобы предоставить 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 2 включают applet с именем Sporder.exe, что позволяет каталогу установленных протоколов переупорядочение в интерактивном режиме после установки протоколов. Сокеты Windows 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. Неявно понятно, что единственный компонент этой цепочки уже определен в параметре CatalogEntryID той же структуры WSAPROTOCOL_INFO. Кроме того, обратите внимание, что цепочки протоколов могут не включать несколько экземпляров одного многоуровневого протокола.