Поделиться через


Настройка и установка транспорта

Чтобы транспортный протокол был доступен через сокеты 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 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 . Неявно понимается, что единственный компонент этой цепочки уже определен в параметре CatalogEntryID той же WSAPROTOCOL_INFO структуры. Также обратите внимание, что цепочки протоколов не могут включать несколько экземпляров одного многоуровневого протокола.