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,这将返回以下扩展错误值之一。
错误代码 | 含义 |
---|---|
内存不足,无法执行操作。 | |
发生内部错误。 | |
参数无效。 如果 puuidProviderId 或 pNSPv2Routine 参数为 NULL,则返回此错误。
如果 pNSPv2Routine 参数指向的NSPV2_ROUTINE结构的 NSPv2LookupServiceBegin、NSPv2LookupServiceNextEx 或 NSPv2LookupServiceEnd 成员为 NULL,也会返回此错误。 命名空间版本 2 提供程序必须至少支持此最小函数集的名称解析。 |
|
找不到指定的 puuidProviderId 参数的命名空间提供程序。 | |
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 提供程序不会由于客户端活动而激活。 每个托管应用程序的提供程序通过调用 WSAAdvertiseProvider 和 WSAUnadvertiseProvider 函数来决定何时使特定提供程序可用或不可用。 客户端活动仅导致尝试联系提供程序(如果可用 () 播发命名空间提供程序时)。
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 |