WSAAdvertiseProvider 函数 (ws2spi.h)

WSAAdvertiseProvider 函数为所有符合条件的客户端提供特定的命名空间版本 2 提供程序。

语法

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

参数

[in] puuidProviderId

指向要播发的命名空间提供程序的提供程序 ID 的指针。

[in] pNSPv2Routine

指向 NSPV2_ROUTINE 结构的指针,其中包含提供程序支持的命名空间服务提供程序版本 2 入口点。

返回值

如果未发生错误, 则 WSAProviderCompleteAsyncCall 返回零。

如果函数失败,则返回值SOCKET_ERROR。 若要获取扩展错误信息,请调用 WSAGetLastError,这将返回以下扩展错误值之一。

错误代码 含义
WSA_NOT_ENOUGH_MEMORY
内存不足,无法执行操作。
WSAEFAULT
发生内部错误。
WSAEINVAL
参数无效。 如果 puuidProviderIdpNSPv2Routine 参数为 NULL,则返回此错误。

如果 pNSPv2Routine 参数指向的NSPV2_ROUTINE结构的 NSPv2LookupServiceBeginNSPv2LookupServiceNextExNSPv2LookupServiceEnd 成员为 NULL,也会返回此错误。 命名空间版本 2 提供程序必须至少支持此最小函数集的名称解析。

WSAEINVALIDPROVIDER
找不到指定的 puuidProviderId 参数的命名空间提供程序。
WSANOTINITIALIZED
Ws2_32.dll 尚未初始化。 应用程序必须先调用 WSAStartup, 然后才能调用任何 Windows 套接字函数。

注解

WSAAdvertiseProvider 函数用作命名空间服务提供程序版本 2 的一部分, (Windows Vista 及更高版本上提供的 NSPv2) 体系结构。

在 Windows Vista 和 Windows Server 2008 上, WSAAdvertiseProvider 函数只能用于对NS_EMAIL命名空间提供程序执行的操作。

WSAAdvertiseProvider 函数播发 NSPv2 提供程序的实例,供客户端查找。 如果要播发的实例是应用程序类型提供程序的实例 (命名空间提供程序的实例,其中NAPI_PROVIDER_INSTALLATION_BLOB结构的 dwProvideType 成员ProviderType_Application) ,则播发提供程序实例将对在同一用户和 WSAAdvertiseProvider 调用方所在的会话中运行的所有客户端进程可见。

通常,NSPv2 提供程序是在调用应用程序以外的进程中实现的。 NSPv2 提供程序不会由于客户端活动而激活。 每个托管应用程序的提供程序通过调用 WSAAdvertiseProviderWSAUnadvertiseProvider 函数来决定何时使特定提供程序可用或不可用。 客户端活动仅导致尝试联系提供程序(如果可用 () 播发命名空间提供程序时)。

WSAAdvertiseProvider 函数由任何希望使特定提供程序可供所有符合条件的客户端使用 (当前使用与托管应用程序相同的凭据运行的所有应用程序调用,并且位于同一用户会话) 中。

一个进程可以同时实现和播发多个提供程序。 Windows 套接字将通过调度对正确命名空间的调用来管理命名空间提供程序。 它还将隐藏 RPC 接口详细信息,并将跨进程调用转换为进程内调用。 因此,NSPv2 提供程序只需实现类似于 NSPv1 提供程序使用的 NSP_ROUTINE 结构的入口点函数表。 NSPv2 提供程序无需担心 RPC 特定要求 (数据封送和序列化,例如) 。

WSAAdvertiseProvider 调用方将指针传递到 pNSPv2Routine 参数中的NSPV2_ROUTINE结构,其中包含提供程序支持的 NSPv2 入口点。

WSAUnadvertiseProvider 函数使特定的命名空间提供程序不再可用于客户端。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 ws2spi.h
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

NAPI_PROVIDER_INSTALLATION_BLOB

NAPI_PROVIDER_TYPE

NSPV2_ROUTINE

WSAEnumNameSpaceProviders

WSAEnumNameSpaceProvidersEx

WSAProviderCompleteAsyncCall

WSASetService

WSAUnadvertiseProvider

WSCEnumNameSpaceProvidersEx32