共用方式為


IFunctionInstanceQuery::Execute 方法 (functiondiscoveryapi.h)

[函式探索可用於需求一節中指定的作業系統。 它可能會在後續版本中改變或無法使用。]

執行 IFunctionDiscovery::CreateInstanceQuery 所定義的查詢。

語法

HRESULT Execute(
  [out] IFunctionInstance **ppIFunctionInstance
);

參數

[out] ppIFunctionInstance

接收所要求函式實例之 IFunctionInstance 介面指標的指標。

傳回值

可能的傳回值包括,但不限於下列各項。

傳回碼/值 描述
S_OK
已成功完成命令。
E_INVALIDARG
ppIFunctionInstance 參數為 NULL
E_OUTOFMEMORY
方法無法配置執行這項作業所需的記憶體。
E_PENDING
提供者所傳回的結果將透過異步通知來傳回。
HRESULT_FROM_WIN32 (ERROR_OBJECT_NOT_FOUND)
0x800710d8
此電腦上不存在指定識別碼所代表的函式實例。
HRESULT_FROM_WIN32 (ERROR_KEY_DELETED)
0x800703fa
無法傳回函式實例,因為對應至函式實例的索引鍵已由另一個進程刪除。 如果在進行查詢處理時刪除機碼,登錄提供者會傳回此錯誤。
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
無法傳回函式實例,因為找不到對應至函式實例的索引鍵。 當提供者找不到實例查詢的相符實例時,登錄提供者會傳回此錯誤。
 

預先定義的查詢是分層 分類的查詢。 執行預先定義的查詢時,每個傳回函式實例的提供者也會傳回 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 通知 () 會如上所述傳送。

備註

用戶端程序必須叫用這個方法,才能從查詢物件擷取數據。 呼叫時,此方法會執行下列動作:

  1. 擷取函式實例。
  2. 如果用戶端程式的 IFunctionDiscoveryNotification 回呼例程提供給 IFunctionDiscovery::CreateInstanceQuery,則會起始更新通知機制。
函式探索網路提供者只會透過 IFunctionDiscoveryNotification 介面傳回函式實例。 當叫用此方法時,它們不會直接傳回任何函式實例。 相反地, Execute 只會起始完全異步的擷取作業,並傳回E_PENDING,表示結果會以異步方式傳回。 通知必須用來從函式探索網路提供者擷取函式實例。

如果在相同的查詢物件上呼叫 Execute 兩次,第一個查詢會在第二個查詢執行之前終止。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 functiondiscoveryapi.h
Dll FunDisc.dll

另請參閱

函式探索查詢

IFunctionInstanceQuery