Функция 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, который возвращает одно из следующих расширенных значений ошибки.
Код ошибки | Значение |
---|---|
Недостаточно памяти для выполнения операции. | |
Внутренняя ошибка. | |
Недопустимый параметр. Эта ошибка возвращается, если параметры puuidProviderId или pNSPv2Routine были **NULL**.
Эта ошибка также возвращается, если элементы NSPv2LookupServiceBegin, NSPv2LookupServiceNextEx или NSPv2LookupServiceEnd структуры NSPV2_ROUTINE , на которые указывает параметр pNSPv2Routine , имеют значение NULL. Поставщик пространства имен версии 2 должен по крайней мере поддерживать разрешение имен, которое этот минимальный набор функций. |
|
Поставщик пространства имен не найден для указанного параметра puuidProviderId . | |
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 |