Функция WSCInstallNameSpaceEx (ws2spi.h)
Функция WSCInstallNameSpaceEx устанавливает поставщик пространства имен. Для поставщиков, которые могут поддерживать несколько пространств имен, эта функция должна вызываться для каждого поддерживаемого пространства имен и каждый раз предоставлять уникальный идентификатор поставщика.
Синтаксис
INT WSCInstallNameSpaceEx(
[in] LPWSTR lpszIdentifier,
[in] LPWSTR lpszPathName,
[in] DWORD dwNameSpace,
[in] DWORD dwVersion,
[in] LPGUID lpProviderId,
[in] LPBLOB lpProviderSpecific
);
Параметры
[in] lpszIdentifier
Указатель на строку, идентифицирующая поставщика, связанного с глобально уникальным идентификатором (GUID), переданным в параметре lpProviderId .
[in] lpszPathName
Указатель на строку Юникода, содержащую путь загрузки к библиотеке DLL поставщика. Эта строка соблюдает обычные правила разрешения пути и может содержать строки внедренной среды (например , %SystemRoot%). Такие строки среды расширяются, когда Ws2_32.dll должен впоследствии загрузить библиотеку DLL поставщика от имени приложения. После развертывания строк внедренной среды Ws2_32.dll передает полученную строку функции LoadLibrary , которая загружает поставщик в память. Дополнительные сведения см. в разделе LoadLibrary.
[in] dwNameSpace
Пространство имен, поддерживаемое этим поставщиком.
[in] dwVersion
Номер версии поставщика.
[in] lpProviderId
Указатель на GUID для поставщика. Этот GUID должен быть создан Uuidgen.exe.
[in] lpProviderSpecific
Большой двоичный объект данных конкретного поставщика, связанный с записью пространства имен.
Возвращаемое значение
Если ошибка не возникает, функция WSCInstallNameSpaceEx возвращает NO_ERROR (ноль). В противном случае он возвращает SOCKET_ERROR , если функция завершается сбоем, и необходимо получить соответствующий код ошибки с помощью функции WSAGetLastError .
Код ошибки | Значение |
---|---|
Вызывающая подпрограмма не имеет достаточных привилегий для установки пространства имен. | |
Один или несколько аргументов являются недопустимыми. | |
Произошла неустранимая ошибка. Эта ошибка возвращается при нескольких условиях, включая следующие: поставщик уже установлен, пользователь не имеет прав администратора, необходимых для записи в реестр Winsock, или произошел сбой при создании или установке записи каталога. | |
Системный вызов, который никогда не должен завершать ошибку, завершился сбоем. | |
Недостаточно памяти. Эта ошибка возвращается при нехватке памяти для выделения новой записи каталога. |
Комментарии
Функции конфигурации пространства имен не влияют на уже запущенные приложения. Недавно установленные поставщики пространства имен не будут видны приложениям, а также изменения в состоянии активации поставщика пространства имен. Приложения, запущенные после вызова WSCInstallNameSpaceEx , увидят изменения.
Большой двоичный объект данных поставщика, связанный с записью пространства имен, переданной в параметре lpProviderInfo , можно запросить с помощью функции WSAEnumNameSpaceProvidersEx .
В настоящее время единственным поставщиком пространства имен, включенным в Состав Windows, который использует параметр lpProviderInfo , является поставщик NS_EMAIL. Формат буфера, на который указывает параметр lpProviderInfo для поставщика NS_EMAIL пространства имен, является NAPI_PROVIDER_INSTALLATION_BLOB структурой.
Функция WSCInstallNameSpaceEx может вызываться только пользователем, вошедшим в систему как член группы "Администраторы". Если WSCInstallNameSpaceEx вызывается пользователем, который не является членом группы администраторов, вызов функции завершится ошибкой. Для компьютеров под управлением Windows Vista или Windows Server 2008 эта функция также может завершиться ошибкой из-за контроля учетных записей пользователей (UAC). Если приложение, содержащее эту функцию, выполняется пользователем, вошедшего в систему как член группы администраторов, отличный от встроенного администратора, этот вызов завершится ошибкой, если приложение не было отмечено в файле манифеста с параметром requestedExecutionLevel , для которого задано значение requireAdministrator. Если в приложении в Windows Vista или Windows Server 2008 отсутствует этот файл манифеста, пользователь, вошедший в систему как член группы администраторов, отличный от встроенного администратора, должен выполнить приложение в расширенной оболочке в качестве встроенного администратора (администратора запуска от имени администратора), чтобы эта функция была успешно выполнена.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | ws2spi.h |
Библиотека | Ws2_32.lib |
DLL | Ws2_32.dll |