[関数検出は、[要件] セクションで指定したオペレーティング システムで使用できます。 以降のバージョンでは変更または使用できない場合があります。]
IFunctionDiscovery::CreateInstanceCollectionQuery によって定義されたクエリを実行します。
構文
HRESULT Execute(
[out] IFunctionInstanceCollection **ppIFunctionInstanceCollection
);
パラメーター
[out] ppIFunctionInstanceCollection
要求された関数インスタンス コレクションを受け取る IFunctionInstanceCollection インターフェイス ポインターへのポインター。
戻り値
可能な戻り値には、次のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
|
メソッドは正常に完了しました。 結果は ppIFunctonInstanceCollecton で同期的に返されます。 |
|
メソッドは、この操作を実行するために必要なメモリを割り当てることができません。 |
|
結果の一部は非同期通知によって返されます。 詳細については、「解説」を参照してください。 |
定義済みのクエリは、階層化されたカテゴリのクエリ です。 定義済みのクエリが実行されると、関数インスタンスを返す各プロバイダーも HRESULT 値を返します。 プロバイダー HRESULT 値が集計され、 Execute メソッドによって返される値には、これらの集計結果が反映されます。 結果は次のように集計されます。
- すべてのプロバイダーが S_OKを返す場合、 Execute は S_OKを返します。
- 少なくとも 1 つのプロバイダーがE_PENDINGを返し、他のすべてのプロバイダーがS_OKまたはE_PENDINGを返す場合、Execute はE_PENDINGを返します。
- すべてのプロバイダーがエラー値 (つまり、 S_OK または E_PENDING以外の値) を返す場合、 Execute は最後にクエリを実行したネットワーク プロバイダーによって返されたエラー値を返します。 また、クライアントの IFunctionDiscoveryNotification コールバック ルーチンが IFunctionDiscovery::CreateInstanceCollectionQuery に提供された場合は、プロバイダーごとに OnError 通知が送信されます。 各 OnError 通知には、プロバイダーによって返される HRESULT が含まれます。
- 少なくとも 1 つのプロバイダーがエラー値を返し、他のすべてのプロバイダーが S_OKを返す場合、 Execute は S_OKを返します。 OnError 通知は、上記のように送信されます。
- 少なくとも 1 つのプロバイダーがエラー値を返し、少なくとも 1 つのプロバイダー がE_PENDINGを返す場合、 Execute は E_PENDINGを返します。 OnError 通知は、上記のように送信されます。
Execute がE_PENDINGを返すと、結果セットは IFunctionDiscovery の CreateInstanceCollectionQuery メソッドに提供される IFunctionDiscoveryNotification インターフェイスを介して非同期的に返されます。 ppIFunctionInstanceCollection は NULL であるか、部分的な結果セットを含む場合があります。 iFunctionDiscoveryNotification の OnEvent メソッドが FD_EVENTID_SEARCHCOMPLETE で呼び出されると、列挙は完了します。 FD_EVENTID_SEARCHCOMPLETE イベントを受信すると、結果に対する追加の通知が更新されます。
解説
このメソッドは、クエリ オブジェクトからデータを取得する前に、クライアント プログラムによって呼び出される必要があります。 このメソッドを呼び出すと、次の処理が実行されます。
- 関数インスタンス コレクション オブジェクトを取得します。
- IFunctionDiscovery::CreateInstanceCollectionQuery に渡されるカテゴリのプロバイダーに対してクエリを実行します。
- カテゴリ プロバイダーを取得します。
- サブカテゴリ データを使用してカテゴリ プロバイダーにクエリを実行し、クエリ制約を使用してコレクションを生成します。
- クライアント プログラムの IFunctionDiscoveryNotification コールバック ルーチンのアドレスが IFunctionDiscovery ::CreateInstanceCollectionQuery に提供されている場合は、更新通知メカニズムを開始します。
- コレクション データをキャッシュし、 を返します。
要件
| サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
| サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
| 対象プラットフォーム | Windows |
| ヘッダー | functiondiscoveryapi.h |
| [DLL] | FunDisc.dll |