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

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

Синтаксис

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

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

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

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

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

Комментарии

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

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

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

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

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

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

Требования

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

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

WSAProtocol_Info

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider

WSCEnumProtocols

WSCInstallProvider