[函数发现可用于“要求”部分中指定的操作系统。 在后续版本中,它可能已更改或不可用。]
执行 IFunctionDiscovery::CreateInstanceCollectionQuery 定义的查询。
语法
HRESULT Execute(
[out] IFunctionInstanceCollection **ppIFunctionInstanceCollection
);
参数
[out] ppIFunctionInstanceCollection
指向 IFunctionInstanceCollection 接口指针的指针,该指针接收请求的函数实例集合。
返回值
可能的返回值包括但不限于以下内容。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 结果在 ppIFunctonInstanceCollecton 中同步返回。 |
|
方法无法分配执行此操作所需的内存。 |
|
某些结果将通过异步通知返回。 有关详细信息,请参见备注。 |
预定义查询是分层 类别的查询。 执行预定义查询时,每个返回函数实例的提供程序也会返回 HRESULT 值。 提供程序 HRESULT 值是聚合的, Execute 方法返回的值反映这些聚合结果。 结果聚合如下:
- 如果所有提供程序都返回 S_OK, 则 Execute 返回 S_OK。
- 如果至少有一个提供程序返回 E_PENDING,而所有其他提供程序返回 S_OK 或 E_PENDING, 则 Execute 返回 E_PENDING。
- 如果所有提供程序 (返回错误值,即 S_OK 或 E_PENDING) 以外的值, 则 Execute 将返回上次查询的网络提供程序返回的错误值。 此外,如果客户端的 IFunctionDiscoveryNotification 回调例程已提供给 IFunctionDiscovery::CreateInstanceCollectionQuery,则会为每个提供程序发送 OnError 通知。 每个 OnError 通知都包含提供程序返回的 HRESULT。
- 如果至少有一个提供程序返回错误值,而所有其他提供程序返回 S_OK, 则 Execute 将返回 S_OK。 如上所述发送 OnError 通知。
- 如果至少有一个提供程序返回错误值,并且至少有一个提供程序返回 E_PENDING, 则 Execute 将返回 E_PENDING。 如上所述发送 OnError 通知。
当 Execute 返回E_PENDING时,将通过提供给 IFunctionDiscovery 的 CreateInstanceCollectionQuery 方法的 IFunctionDiscoveryNotification 接口异步返回结果集。 ppIFunctionInstanceCollection 可以为 NULL ,也可以包含部分结果集。 使用 FD_EVENTID_SEARCHCOMPLETE 调用 IFunctionDiscoveryNotification 的 OnEvent 方法后,枚举将完成。 收到 FD_EVENTID_SEARCHCOMPLETE 事件后,其他通知会更新结果。
备注
必须先由客户端程序调用此方法,然后才能从查询对象检索任何数据。 调用此方法时,将执行以下操作:
- 检索函数实例集合对象。
- 查询传递到 IFunctionDiscovery::CreateInstanceCollectionQuery 的类别的提供程序。
- 检索类别提供程序。
- 使用子类别数据查询类别提供程序,以使用查询约束生成集合。
- 如果将客户端程序的 IFunctionDiscoveryNotification 回调例程的地址提供给 IFunctionDiscovery::CreateInstanceCollectionQuery,则启动更新通知机制。
- 缓存集合数据并返回 。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | functiondiscoveryapi.h |
DLL | FunDisc.dll |