Функция 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 возвращается определенный код ошибки.
Код ошибки | Значение |
---|---|
Один или несколько аргументов не находятся в допустимой части адресного пространства пользователя. | |
Один или несколько аргументов являются недопустимыми. | |
Произошла неустранимая ошибка. Эта ошибка возвращается при нескольких условиях, включая следующие: у пользователя отсутствуют права администратора, необходимые для записи в реестр Winsock, или произошел сбой при открытии или записи в каталоге. | |
Недостаточно памяти. Эта ошибка возвращается, если памяти недостаточно для выделения новой записи каталога. |
Комментарии
Функция 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 |