Функция WSCWriteProviderOrder (sporder.h)

Функция WSCWriteProviderOrder используется для изменения порядка доступных поставщиков транспорта. Порядок протоколов определяет приоритет протокола при перечислении или выборе для использования.

Синтаксис

int WSCWriteProviderOrder(
  [in] LPDWORD lpwdCatalogEntryId,
  [in] DWORD   dwNumberOfEntries
);

Параметры

[in] lpwdCatalogEntryId

Указатель на массив элементов CatalogEntryId , найденных в структуре WSAPROTOCOL_INFO . Порядок элементов CatalogEntryId — это новый порядок приоритета для протоколов.

[in] dwNumberOfEntries

Количество элементов в массиве lpwdCatalogEntryId .

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

Функция возвращает ERROR_SUCCESS (ноль), если подпрограмма выполнена успешно. В противном случае возвращается определенный код ошибки.

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

Комментарии

Порядок первоначальной установки поставщиков транспортных служб определяет порядок их перечисления через WSCEnumProtocols в интерфейсе поставщика услуг или через WSAEnumProtocols в интерфейсе приложения. Что еще более важно, этот порядок также определяет порядок, в котором учитываются протоколы и поставщики услуг, когда клиент запрашивает создание сокета на основе его семейства адресов, типа и идентификатора протокола.

Сокеты Windows 2 включают в себя приложение Sporder.exe, которое позволяет переупорядочение каталога установленных протоколов в интерактивном режиме после установки протоколов. Windows Sockets 2 также включает вспомогательную библиотеку DLL ,Sporder.dll , которая экспортирует этот процедурный интерфейс для изменения порядка протоколов. Этот интерфейс можно импортировать путем связывания с Sporder.lib.

Ниже приведены сценарии, в которых может произойти сбой функции WSCWriteProviderOrder .

  • Параметр dwNumberOfEntries не равен количеству зарегистрированных поставщиков услуг.
  • LpwdCatalogEntryId содержит недопустимый идентификатор каталога.
  • LpwdCatalogEntryId не содержит все допустимые идентификаторы каталога только один раз.
  • Подпрограмма не может получить доступ к реестру по какой-либо причине (например, неадекватные разрешения пользователя).
  • В настоящее время функция вызывается другим процессом (или потоком).

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

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

Требования

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

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

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols