Функция WSCUpdateProvider32 (ws2spi.h)

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

Примечание Этот вызов является строго 32-разрядной версией WSCUpdateProvider для использования на 64-разрядных платформах. Он предоставляется для предоставления 64-разрядным процессам доступа к 32-разрядным каталогам.

 

Синтаксис

int WSCUpdateProvider32(
  [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

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

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

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

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

Комментарии

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

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

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

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

Функция WSCUpdateProvider32 может вызываться только пользователем, вошедшего в систему как член группы Администраторы. Если WSCUpdateProvider32 вызывается пользователем, который не является членом группы Администраторы, вызов функции завершится ошибкой.

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

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

Требования

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

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

WSAProtocol_Info

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider32

WSCEnumProtocols32

WSCInstallProvider64_32

WSCInstallProviderAndChains64_32

WSCUpdateProvider