Поставщики служб пространства имен
Поставщик пространства имен реализует сопоставление интерфейсов между пространством имен Winsock и собственным программным интерфейсом существующей службы имен, такой как DNS, X.500 или NetWare Directory Services (NDS). Хотя поставщик пространства имен поддерживает ровно одно пространство имен, можно установить несколько поставщиков для заданного пространства имен. Для создания экземпляра нескольких поставщиков пространств имен также можно создать один БИБЛИОТЕКУ DLL. По мере установки поставщиков пространств имен каталог структур WSANAMESPACE_INFO поддерживается. Приложение может использовать WSAEnumNameSpaceProviders для обнаружения пространств имен, поддерживаемых на компьютере.
В Windows Vista и более поздних версиях предоставляется расширенная структура WSANAMESPACE_INFOEX и функции WSAEnumNameSpaceProvidersEx.
На 64-разрядных платформах, аналогичных WSCEnumNameSpaceProviders32 и функции WSCEnumNameSpaceProvidersEx32 предоставляются для перечисления 32-разрядного каталога.
Подробные сведения см. в требования к поставщику служб Winsock.
Устаревшие поставщики услуг GetXbyY
Сокеты Windows 2 полностью поддерживают средства разрешения имен tcp/IP, найденные в сокетах Windows версии 1.1. Это делается путем включения набора функций GetXbyY в SPI. Однако обработка этого набора функций несколько отличается от остальных функций SPI. Функции GetXbyY, отображаемые в SPI, предопределяются GETXBYYSP_ и приведены в следующей таблице.
Функции стиля Беркли
Имя функции SPI | Описание |
---|---|
GETXBYYSP_gethostbyaddr | Предоставляет структуру узла для указанного адреса узла. |
GETXBYYSP_gethostbyname | Предоставляет структуру узла для указанного имени узла. |
GETXBYYSP_getprotobyname | Предоставляет структуру прототипа для указанного имени протокола. |
GETXBYYSP_getprotobynumber | Предоставляет структуру прототипа для указанного номера протокола. |
GETXBYYSP_getservbyname | Предоставляет структурудля указанного имени службы. |
GETXBYYSP_getservbyport | Предоставляет обслуживаемую структуру для службы на указанном порту. |
GETXBYYSP_gethostname | Возвращает стандартное имя узла для локального компьютера. |
Асинхронные функции стиля
Имя функции SPI | Описание |
---|---|
GETXBYYSP_WSAAsyncGetHostByAddr | Предоставляет структуру узла для указанного адреса узла. |
GETXBYYSP_WSAAsyncGetHostByName | Предоставляет структуру узла для указанного имени узла. |
GETXBYYSP_WSAAsyncGetProtoByName | Предоставляет структуру прототипа для указанного имени протокола. |
GETXBYYSP_WSAAsyncGetProtoByNumber | Предоставляет структуру прототипа для указанного номера протокола. |
GETXBYYSP_WSAAsyncGetServByName | Предоставляет структурудля указанного имени службы. |
GETXBYYSP_WSAAsyncGetServByPort | Предоставляет обслуживаемую структуру для службы на указанном порту. |
GETXBYYSP_WSACancelAsyncRequest | Отменяет асинхронную операцию GetXbyY. |
Синтаксис и семантика этих функций GetXbyY в SPI точно совпадают с описанными в спецификации API и поэтому не повторяются здесь.
Библиотека DLL сокетов Windows 2 позволяет точно одному поставщику услуг предлагать эти службы. Поэтому нет необходимости включать указатели на эти функции в таблицу процедур, полученную от поставщиков услуг при запуске. В средах Windows путь к библиотеке DLL, реализующей эти функции, извлекается из значения, найденного в следующем пути реестра. Эта запись реестра не существует по умолчанию:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2\Parameters\GetXByYLibraryPath
поставщик служб GetXbyY по умолчанию Built-In
Поставщик служб GetXbyY по умолчанию getXbyY интегрирован в стандартные компоненты времени выполнения Сокетов Windows 2. Этот поставщик по умолчанию реализует все перечисленные выше функции, поэтому не требуется для реализации этих функций любым поставщиком пространства имен. Однако поставщик пространства имен может предоставить любую или все эти функции (и таким образом переопределить значения по умолчанию), просто сохраняя строку, которая является путем к библиотеке DLL, реализующей эти функции в указанном разделе реестра. Любые функции GetXbyY, которые не экспортируются библиотекой DLL именованного поставщика, будут предоставлены через встроенные значения по умолчанию. Обратите внимание, что если поставщик выбирает для предоставления любой из асинхронной версии функций GetXbyY, он должен предоставить все асинхронные функции, чтобы операция отмены работала соответствующим образом.
Текущая реализация поставщика услуг по умолчанию GetXbyY находится в Wsock32.dll. В зависимости от того, как параметры TCP/IP были установлены с помощью панели управления, разрешение имен будет выполняться с помощью DNS-файлов или локальных узлов. При использовании DNS поставщик услуг по умолчанию GetXbyY использует стандартные вызовы API Сокетов Windows 1.1 для взаимодействия с DNS-сервером. Эти транзакции будут выполняться с помощью любого стека TCP/IP в качестве стека TCP/IP по умолчанию. Однако два особых случая заслуживают особого упоминания.
Реализация GETXBYYSP_gethostname по умолчанию получает имя локального узла из реестра. Это будет соответствовать имени, назначенному "Мой компьютер". Реализация GETXBYYSP_gethostbyname по умолчанию и GETXBYYSP_WSAAsyncGetHostByName всегда сравнивает указанное имя узла с именем локального узла. Если они совпадают, реализация по умолчанию использует частный интерфейс для проверки стека MICROSOFT TCP/IP, чтобы обнаружить его локальный IP-адрес. Таким образом, чтобы быть полностью независимым от стека MICROSOFT TCP/IP, поставщик пространства имен должен реализовать как GETXBYYSP_gethostbyname, так и GETXBYYSP_WSAAsyncGetHostByName.