IFunctionDiscoveryProvider::InstanceQueryService 方法 (functiondiscoveryprovider.h)

[函数发现可用于“要求”部分中指定的操作系统。 它在后续版本中可能已更改或不可用。]

为函数实例创建特定于提供程序的 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 。

返回值

可能的返回值包括但不限于以下值。

返回代码 说明
S_OK
该方法已成功完成。
E_NOINTERFACE
提供程序实现 由 guidService 标识的服务,但不实现 由 rrid 标识的接口。
E_OUTOFMEMORY
方法无法分配执行此操作所需的内存。
E_NOTIMPL
提供程序不实现 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

请参阅

IFunctionDiscoveryProvider