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

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

HRESULT Execute(
  [out] IFunctionInstance **ppIFunctionInstance

[out] ppIFunctionInstance

指向接收请求的函数实例的 IFunctionInstance 接口指针的指针。

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

返回代码/值

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

  • 如果所有提供程序都返回S_OK, 则 Execute 返回S_OK。
  • 如果至少有一个提供程序返回E_PENDING,而所有其他提供程序返回S_OK或E_PENDING, 则 Execute 返回E_PENDING。
  • 如果所有提供程序都返回错误值 (即S_OK或E_PENDING) 以外的值, 则 Execute 将返回上次查询的网络提供程序返回的错误值。 此外,如果向 IFunctionDiscovery::CreateInstanceCollectionQuery 提供了客户端的 IFunctionDiscoveryNotification 回调例程,则会为每个提供程序发送 OnError 通知。 每个 OnError 通知都包含提供程序返回的 HRESULT。
  • 如果至少有一个提供程序返回错误值,而所有其他提供程序返回S_OK, 则 Execute 将返回S_OK。 如上文所述发送 OnError 通知 () 。
  • 如果至少有一个提供程序返回错误值,并且至少有一个提供程序返回E_PENDING, 则 Execute 将返回E_PENDING。 如上文所述发送 OnError 通知 () 。
  • 客户端程序必须调用此方法才能从查询对象中检索数据。 调用此方法时,将执行以下操作:

  • 检索函数实例。
  • 如果将客户端程序的 IFunctionDiscoveryNotification 回调例程的地址提供给 IFunctionDiscovery::CreateInstanceQuery,则启动更新通知机制。
  • 函数发现网络提供程序仅通过 IFunctionDiscoveryNotification 接口返回函数实例。 调用此方法时,它们不直接返回函数实例。 相反, Execute 只是启动完全异步的检索操作,并返回E_PENDING指示将以异步方式返回结果。 必须使用通知从函数发现网络提供程序检索函数实例。

    如果对同一查询对象调用了 两次 Execute ,则第一个查询在执行第二个查询之前终止。