[函数发现可用于“要求”部分中指定的操作系统。 它在后续版本中可能已更改或不可用。]
为函数实例创建特定于提供程序的 COM 对象。 提供程序编写器可以实现此方法,以便通过 COM 对象提供其他功能。
语法
HRESULT InstanceQueryService(
[in] IFunctionInstance *pIFunctionInstance,
[in] INT_PTR iProviderInstanceContext,
[in] REFGUID guidService,
[in] REFIID riid,
[out] IUnknown **ppIUnknown
);
参数
[in] pIFunctionInstance
指向 IFunctionInstance 接口的 指针。
[in] iProviderInstanceContext
与特定函数实例关联的上下文。
[in] guidService
服务的唯一标识符 (SID) 。 这是提供程序编写器定义的服务 ID。 有关示例,请参阅 FunctionDiscoveryServiceIDs.h。
[in] riid
调用方希望为服务接收的接口的唯一标识符。
[out] ppIUnknown
接收服务的接口指针的指针。 当不再需要服务时,调用方负责通过此接口指针调用 Release 。
返回值
可能的返回值包括但不限于以下值。
| 返回代码 | 说明 |
|---|---|
|
该方法已成功完成。 |
|
提供程序实现 由 guidService 标识的服务,但不实现 由 rrid 标识的接口。 |
|
方法无法分配执行此操作所需的内存。 |
|
提供程序不实现 IFunctionInstance::QueryService 方法,或者 guidService 指定的服务标识符与提供程序的服务标识符不匹配。 |
备注
InstanceQueryService 创建或访问使用 guidService 标识的服务的实现,返回 ppv 参数中 riid 指定的接口的地址。 提供程序可以实现服务,此方法为提供程序提供提供此实现的机制,而不是要求创建一个新对象来实现该服务。
如果 guidService 不属于此提供程序,或者不支持 riid 接口,则提供程序应返回E_NOINTERFACE。 如果提供程序只是不实现此方法或未实现请求的 SID,则应返回 E_NOTIMPL 。
支持嵌入式服务或设备的任何提供程序都必须实现SID_PNPXServiceCollection服务。 如果支持SID_PNPXServiceCollection服务,客户端可以调用 IFunctionInstance::QueryService 来访问与嵌入式服务或设备关联的信息和元数据。 例如,PnP-X 提供程序 (即 SSDP 提供程序 和 WSD 提供程序) 实现对SID_PNPXServiceCollection服务的支持。 并非所有提供程序都实现SID_PNPXServiceCollection服务支持。
要求
| 最低受支持的客户端 | Windows Vista [仅限桌面应用] |
| 最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
| 目标平台 | Windows |
| 标头 | functiondiscoveryprovider.h |