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

Функция WSAAdvertiseProvider делает конкретный поставщик пространства имен версии 2 доступным для всех соответствующих клиентов.

Синтаксис

INT WSAAPI WSAAdvertiseProvider(
  [in] const GUID             *puuidProviderId,
  [in] const LPCNSPV2_ROUTINE pNSPv2Routine
);

Параметры

[in] puuidProviderId

Указатель на идентификатор поставщика пространства имен, который необходимо объявить.

[in] pNSPv2Routine

Указатель на структуру NSPV2_ROUTINE с точками входа поставщика службы пространства имен версии 2, поддерживаемыми поставщиком.

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

Если ошибка не возникает, WSAProviderCompleteAsyncCall возвращает ноль.

Если функция завершается сбоем, возвращаемое значение SOCKET_ERROR. Чтобы получить расширенные сведения об ошибке, вызовите WSAGetLastError, который возвращает одно из следующих расширенных значений ошибки.

Код ошибки Значение
WSA_NOT_ENOUGH_MEMORY
Недостаточно памяти для выполнения операции.
WSAEFAULT
Внутренняя ошибка.
WSAEINVAL
Недопустимый параметр. Эта ошибка возвращается, если параметры puuidProviderId или pNSPv2Routine были **NULL**.

Эта ошибка также возвращается, если элементы NSPv2LookupServiceBegin, NSPv2LookupServiceNextEx или NSPv2LookupServiceEnd структуры NSPV2_ROUTINE , на которые указывает параметр pNSPv2Routine , имеют значение NULL. Поставщик пространства имен версии 2 должен по крайней мере поддерживать разрешение имен, которое этот минимальный набор функций.

WSAEINVALIDPROVIDER
Поставщик пространства имен не найден для указанного параметра puuidProviderId .
WSANOTINITIALISED
Ws2_32.dll не инициализирована. Приложение должно сначала вызвать WSAStartup , прежде чем вызывать какие-либо функции windows Sockets.

Комментарии

Функция WSAAdvertiseProvider используется как часть архитектуры поставщика служб пространства имен версии 2 (NSPv2), доступной в Windows Vista и более поздних версиях.

В Windows Vista и Windows Server 2008 функцию WSAAdvertiseProvider можно использовать только для операций с поставщиками NS_EMAIL пространств имен.

Функция WSAAdvertiseProvider объявляет экземпляр поставщика NSPv2 для поиска клиентами. Если объявляемый экземпляр является экземпляром поставщика типа приложения (поставщика пространства имен, в котором элемент dwProvideTypeструктуры NAPI_PROVIDER_INSTALLATION_BLOB является ProviderType_Application), объявленный экземпляр поставщика будет виден всем клиентским процессам, выполняемым под тем же пользователем и в том же сеансе, что и вызывающий объект WSAAdvertiseProvider.

Как правило, поставщики NSPv2 реализуются в процессах, отличных от вызывающих приложений. Поставщики NSPv2 не активируются в результате действий клиента. Каждое приложение поставщика, размещающее поставщик, решает, когда следует сделать конкретный поставщик доступным или недоступным, путем вызова функций WSAAdvertiseProvider и WSAUnadvertiseProvider . Действие клиента приводит к попыткам связаться с поставщиком только при наличии (при объявлении поставщика пространства имен).

Функция WSAAdvertiseProvider вызывается любым приложением, которое хочет сделать определенный поставщик доступным для всех соответствующих клиентов (в настоящее время все приложения, работающие с теми же учетными данными, что и размещающее приложение, и в том же сеансе пользователя).

Процесс может реализовать и объявить несколько поставщиков одновременно. Сокеты Windows будут управлять поставщиками пространств имен путем отправки вызовов в правильный. Он также скрывает сведения об интерфейсе RPC и преобразует межпроцессные вызовы во внутрипроцессные вызовы. Поставщик NSPv2 должен реализовать только таблицу функций точек входа, аналогичную структуре NSP_ROUTINE , используемой поставщиком NSPv1. ПоставщикУ NSPv2 не нужно беспокоиться о конкретных требованиях RPC (например, маршалинга и сериализации данных).

Вызывающий объект WSAAdvertiseProvider передает указатель на структуру NSPV2_ROUTINE в параметре pNSPv2Routine с точками входа NSPv2, поддерживаемыми поставщиком.

Функция WSAUnadvertiseProvider делает конкретный поставщик пространств имен недоступным для клиентов.

Требования

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

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

NAPI_PROVIDER_INSTALLATION_BLOB

NAPI_PROVIDER_TYPE

NSPV2_ROUTINE

WSAEnumNameSpaceProviders

WSAEnumNameSpaceProvidersEx

WSAProviderCompleteAsyncCall

WSASetService

WSAUnadvertiseProvider

WSCEnumNameSpaceProvidersEx32