次の方法で共有


IFunctionDiscoveryProvider::Query メソッド (functiondiscoveryprovider.h)

[関数検出は、[要件] セクションで指定したオペレーティング システムで使用できます。 以降のバージョンでは変更または使用できない場合があります。]

指定した制約を満たす関数インスタンスのコレクションを取得します。

構文

HRESULT Query(
  [in]  IFunctionDiscoveryProviderQuery *pIFunctionDiscoveryProviderQuery,
  [out] IFunctionInstanceCollection     **ppIFunctionInstanceCollection
);

パラメーター

[in] pIFunctionDiscoveryProviderQuery

クエリ条件を定義するパラメーターを含む IFunctionDiscoveryProviderQuery インターフェイスへのポインター。

[out] ppIFunctionInstanceCollection

指定されたクエリに応答して関数インスタンスを同期的に返すためにプロバイダーが使用する必要がある IFunctionInstanceCollection インターフェイスへのポインター。

Query メソッドを実装するときに、プロバイダーが通知をサポートしている場合、つまりプロバイダーが非同期的に結果を返す場合は、このパラメーターを NULL に設定できます。 非同期の結果は、プロバイダーの Initialize メソッドに渡される IFunctionDiscoveryNotification インターフェイスを使用して返される必要があります。

クライアント アプリケーションが通知を実装していない場合は、 NULL パラメーターを渡すことができます。

戻り値

可能な戻り値には、次のものが含まれますが、これらに限定されません。

リターン コード 説明
S_OK
メソッドが正常に完了し、結果が同期的に返されます。
E_INVALIDARG
pIFunctionDiscoveryProviderQuery パラメーターが NULL です
E_PENDING
メソッドは正常に完了し、結果は非同期的に返されます。

注釈

アクティブなクエリは、 EndQuery メソッドの呼び出しで関数探索によって終了します。 EndQuery は、クライアントがクエリに IFunctionDiscoveryNotification インターフェイスを指定した場合にのみ呼び出されることに注意してください。 IFunctionDiscoveryNotification が指定されていない場合は、クエリ呼び出しが完了したら、プロバイダーによってクエリが終了したと見なす必要があります。

クライアントは、前のクエリ呼び出しが返された後、いつでも クエリ を再実行できます。 Query の実装は、新しいクエリの IFunctionInstanceCollection を返すことができる必要があります。 EndQuery は、クライアントがプロバイダーの Initialize メソッドに渡された IFunctionDiscoveryNotification インターフェイスを渡したときに、後続のクエリ呼び出しの前にのみ呼び出されます。

Query がE_PENDINGを返す場合、プロバイダーは IFunctionDiscoveryNotification インターフェイスの OnEvent メソッドを FD_EVENTID_SEARCHCOMPLETE と共に呼び出して、結果の列挙が完了したことを示す必要があります。 FD_EVENTID_SEARCHCOMPLETE イベントの送信に失敗すると、クライアントが無期限にハングする可能性があります

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー functiondiscoveryprovider.h

こちらもご覧ください

IFunctionDiscoveryProvider