функция WSCInstallProvider64_32 (ws2spi.h)

[**WSCInstallProvider64_32** больше недоступен для использования в Windows Vista. Вместо этого используйте WSCInstallProvider или WSCInstallProviderAndChains.]

Функция WSCInstallProvider64_32 устанавливает указанный поставщик транспортных служб в 32- и 64-разрядные базы данных конфигурации системы на 64-разрядном компьютере.

Синтаксис

int WSCInstallProvider64_32(
  [in]  LPGUID                    lpProviderId,
  [in]  const WCHAR               *lpszProviderDllPath,
  [in]  const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  [in]  DWORD                     dwNumberOfEntries,
  [out] LPINT                     lpErrno
);

Параметры

[in] lpProviderId

Указатель на глобальный уникальный идентификатор (GUID) для поставщика.

[in] lpszProviderDllPath

Указатель на строку Юникода, содержащую путь загрузки к 64-разрядной библиотеке DLL поставщика. Эта строка соблюдает обычные правила разрешения пути и может содержать строки внедренной среды (например, %SystemRoot%). Такие строки среды расширяются, когда Ws2_32.dll должен впоследствии загрузить библиотеку DLL поставщика от имени приложения. После развертывания строк внедренной среды Ws2_32.dll передает полученную строку функции LoadLibrary , которая загружает поставщик в память. Дополнительные сведения см. в разделе LoadLibrary.

[in] lpProtocolInfoList

Указатель на массив WSAProtocol_Info структур. Каждая структура определяет протокол, семейство адресов и тип сокета, поддерживаемые поставщиком.

[in] dwNumberOfEntries

Количество записей в массиве lpProtocolInfoList .

[out] lpErrno

Указатель на код ошибки в случае сбоя функции.

Возвращаемое значение

Если WSCInstallProvider64_32 успешно, возвращается ноль. В противном случае возвращается SOCKET_ERROR, а в параметре lpErrno возвращается определенный код ошибки.

Код ошибки Значение
WSAEFAULT
Один или несколько аргументов не входят в допустимую часть адресного пространства пользователя.
WSAEINVAL
Один или несколько аргументов являются недопустимыми.
WSAENOBUFS
Память не может быть выделена для буферов.
WSANO_RECOVERY
Произошла неустранимая ошибка. Эта ошибка возвращается при нескольких условиях, включая следующие: поставщик уже установлен, пользователь не имеет прав администратора, необходимых для записи в реестр Winsock, или произошел сбой при создании или установке записи каталога.
WSASYSCALLFAILURE
Системный вызов, который никогда не должен завершать ошибку, завершился сбоем.
WSA_NOT_ENOUGH_MEMORY
Недостаточно памяти. Эта ошибка возвращается при нехватке памяти для выделения новой записи каталога.

Комментарии

WSCInstallProvider64_32 — это базовая версия функции WSCInstallProviderAndChains64_32 , которая устанавливает только одного поставщика транспортных служб. WSCInstallProvider64_32 можно использовать для установки базового протокола, многоуровневого протокола или цепочки протоколов. Если устанавливается поставщик многоуровневой службы, следует использовать WSCInstallProviderAndChains64_32 , так как эта функция позволяет установить многоуровневый протокол и одну или несколько цепочек протоколов с одним вызовом функции. Для выполнения той же работы с помощью WSCInstallProvider64_32 потребуется несколько вызовов функций для установки каждого компонента поставщика услуг.

Сокеты Windows (Winsock) 2 вмещают понятие многоуровневого протокола. Многоуровневый протокол — это протокол, который реализует только функции связи более высокого уровня, полагаясь на базовый транспортный стек для фактического обмена данными с удаленной конечной точкой. Примером многоуровневого протокола может быть уровень безопасности, который добавляет протокол в процесс установления соединения для выполнения проверки подлинности и создания взаимно согласованной схемы шифрования. Для такого протокола безопасности обычно требуются службы базового надежного транспортного протокола, например TCP или SPX. Термин базовый протокол относится к такому протоколу, как TCP или SPX, который полностью способен осуществлять обмен данными с удаленной конечной точкой. Термин многоуровневый протокол используется для описания протокола, который не может стоять отдельно. Затем цепочка протоколов будет определена как один или несколько многоуровневых протоколов, нанизанных вместе и привязанных к базовому протоколу. Базовый протокол содержит элемент ChainLenструктуры WSAProtocol_Info , для которого задано значение BASE_PROTOCOL которое определено как 1. Многоуровневый протокол содержит элемент ChainLenструктуры WSAPROTOCOL_INFO , для которого задано значение LAYERED_PROTOCOL которое равно нулю. Цепочка протоколов содержит элемент ChainLenструктуры WSAPROTOCOL_INFO , равный больше 1.

WSCInstallProvider64_32 — это 64-разрядная версия WSCInstallProvider , которая устанавливает поставщика в 32- и 64-разрядные каталоги на 64-разрядных платформах. То есть на 64-разрядных платформах поддерживаются два каталога Winsock, и 32-разрядные и 64-разрядные процессы могут загружать поставщика транспорта, установленного с этой функцией. На 64-разрядных платформах WSCInstallProvider устанавливается только в 64-разрядный каталог Winsock.

На 64-разрядном компьютере все вызовы, не предназначенные специально для 32-разрядной версии (например, все функции, которые не заканчиваются на "32"), работают в собственном 64-разрядном каталоге. Процессы, выполняемые на 64-разрядном компьютере, должны использовать WSCInstallProvider64_32 для работы как с 32-разрядным каталогом, так и с 64-разрядным каталогом, сохраняя совместимость. Определения и семантика конкретных 32-разрядных вызовов совпадают с собственными аналогами.

Эта подпрограмма создает необходимые общие сведения о конфигурации Winsock 2 для указанного поставщика. Она применима к базовым протоколам, многоуровневым протоколам и цепочкам протоколов.

Параметр lpProtocolInfoList содержит список записей протокола для установки. Вызывающие WSCInstallProvider64_32 отвечают за настройку соответствующих записей протокола. Параметр lpProtocolInfoList не должен иметь значение NULL.

После успешного завершения этой процедуры сведения о протоколе, предоставленные в lpProtocolInfoList , будут возвращены WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32. Имейте в виду, что в Windows только экземпляры Ws2_32.dll, созданные путем вызова WSAStartup после успешного выполнения этой функции, будут включать новые записи в WSAEnumProtocols, WSCEnumProtocols и WSCEnumProtocols32.

Примечание Функция WSAEnumProtocols не перечисляет многоуровневую запись протокола, а WSCEnumProtocols и WSCEnumProtocols32 .

 

При успешном выполнении WSCInstallProvider64_32 попытается оповещать все заинтересованные приложения, зарегистрированные для уведомления об изменении, вызвав WSAProviderConfigChange.

Функция WSCInstallProvider64_32 может вызываться только пользователем, вошедшего в систему как член группы "Администраторы". Если WSCInstallProvider64_32 вызывается пользователем, который не является членом группы "Администраторы", вызов функции завершится ошибкой и WSANO_RECOVERY возвращается в параметре lpErrno . Для компьютеров под управлением Windows Vista или Windows Server 2008 эта функция также может завершиться сбоем из-за контроля учетных записей пользователей (UAC). Если приложение, содержащее эту функцию, выполняется пользователем, вошедшего в систему как член группы администраторов, отличный от встроенного администратора, этот вызов завершится ошибкой, если приложение не было отмечено в файле манифеста с параметром requestedExecutionLevel , для которого задано значение requireAdministrator. Если в приложении в Windows Vista или Windows Server 2008 отсутствует этот файл манифеста, пользователь, вошедший в систему как член группы администраторов, отличный от встроенного администратора, должен выполнить приложение в расширенной оболочке в качестве встроенного администратора (администратора запуска от имени администратора), чтобы эта функция была успешно выполнена.

Вызывающее приложение должно выполнить любую установку файлов или конфигурацию, зависящую от поставщика услуг.

Если используется функция WSCInstallProvider или WSCInstallProviderAndChains , ее необходимо вызвать один раз для установки поставщика в 32-разрядном каталоге и один раз для установки поставщика в 64-разрядном каталоге на 64-разрядной платформе.

Требования

Требование Значение
Минимальная версия клиента Windows XP Professional x64 Edition [только классические приложения]
Минимальная версия сервера Windows Server 2003 x64 Edition [только классические приложения]
Целевая платформа Windows
Header ws2spi.h
Библиотека Ws2_32.lib
DLL Ws2_32.dll

См. также раздел

LoadLibrary

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

Поставщики транспортных услуг

WSAEnumProtocols

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider32

WSCEnumProtocols

WSCEnumProtocols32

WSCInstallProvider

WSCInstallProviderAndChains

WSCInstallProviderAndChains64_32