IFunctionInstanceCollectionQuery::Execute 方法 (functiondiscoveryapi.h)

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

执行 IFunctionDiscovery::CreateInstanceCollectionQuery 定义的查询。

语法

HRESULT Execute(
  [out] IFunctionInstanceCollection **ppIFunctionInstanceCollection
);

参数

[out] ppIFunctionInstanceCollection

指向 IFunctionInstanceCollection 接口指针的指针,该指针接收请求的函数实例集合。

返回值

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

返回代码 说明
S_OK
该方法已成功完成。 结果在 ppIFunctonInstanceCollecton 中同步返回。
E_OUTOFMEMORY
方法无法分配执行此操作所需的内存。
E_PENDING
某些结果将通过异步通知返回。 有关详细信息,请参见备注。
 

预定义查询是分层 类别的查询。 执行预定义查询时,每个返回函数实例的提供程序也会返回 HRESULT 值。 提供程序 HRESULT 值是聚合的, Execute 方法返回的值反映这些聚合结果。 结果聚合如下:

  • 如果所有提供程序都返回 S_OK则 Execute 返回 S_OK
  • 如果至少有一个提供程序返回 E_PENDING,而所有其他提供程序返回 S_OKE_PENDING则 Execute 返回 E_PENDING
  • 如果所有提供程序 (返回错误值,即 S_OKE_PENDING) 以外的值, 则 Execute 将返回上次查询的网络提供程序返回的错误值。 此外,如果客户端的 IFunctionDiscoveryNotification 回调例程已提供给 IFunctionDiscovery::CreateInstanceCollectionQuery,则会为每个提供程序发送 OnError 通知。 每个 OnError 通知都包含提供程序返回的 HRESULT。
  • 如果至少有一个提供程序返回错误值,而所有其他提供程序返回 S_OK则 Execute 将返回 S_OK如上所述发送 OnError 通知。
  • 如果至少有一个提供程序返回错误值,并且至少有一个提供程序返回 E_PENDING则 Execute 将返回 E_PENDING如上所述发送 OnError 通知。
当 Execute 返回S_OK时,ppIFunctionInstanceCollection 包含查询的结果。 如果将 IFunctionDiscoveryNotification 接口提供给 IFunctionDiscoveryCreateInstanceCollectionQuery 方法,则将使用该接口传达对结果所做的更改。

当 Execute 返回E_PENDING时,将通过提供给 IFunctionDiscoveryCreateInstanceCollectionQuery 方法的 IFunctionDiscoveryNotification 接口异步返回结果集。 ppIFunctionInstanceCollection 可以为 NULL ,也可以包含部分结果集。 使用 FD_EVENTID_SEARCHCOMPLETE 调用 IFunctionDiscoveryNotificationOnEvent 方法后,枚举将完成。 收到 FD_EVENTID_SEARCHCOMPLETE 事件后,其他通知会更新结果。

备注

必须先由客户端程序调用此方法,然后才能从查询对象检索任何数据。 调用此方法时,将执行以下操作:

  1. 检索函数实例集合对象。
  2. 查询传递到 IFunctionDiscovery::CreateInstanceCollectionQuery 的类别的提供程序。
  3. 检索类别提供程序。
  4. 使用子类别数据查询类别提供程序,以使用查询约束生成集合。
  5. 如果将客户端程序的 IFunctionDiscoveryNotification 回调例程的地址提供给 IFunctionDiscovery::CreateInstanceCollectionQuery,则启动更新通知机制。
  6. 缓存集合数据并返回 。
函数发现网络提供程序仅通过 IFunctionDiscoveryNotification 接口返回函数实例。 调用此方法时,它们不直接返回函数实例。 相反, Execute 只是启动完全异步的检索操作,并返回 E_PENDING 以指示将以异步方式返回结果。 必须使用通知从 Function Discovery 网络提供程序检索函数实例。

要求

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

请参阅

函数发现查询

IFunctionInstanceCollectionQuery