[関数検出は、[要件] セクションで指定したオペレーティング システムで使用できます。 以降のバージョンでは変更または使用できない場合があります。]
カテゴリとサブカテゴリに基づいて、関数インスタンスの指定されたコレクションを取得します。
構文
HRESULT GetInstanceCollection(
[in] const WCHAR *pszCategory,
[in] const WCHAR *pszSubCategory,
[in] BOOL fIncludeAllSubCategories,
[out] IFunctionInstanceCollection **ppIFunctionInstanceCollection
);
パラメーター
[in] pszCategory
列挙するカテゴリの識別子。 「カテゴリ定義」を参照してください。
[in] pszSubCategory
列挙するサブカテゴリの識別子。 「 サブカテゴリの定義」を参照してください。 このパラメーターは、NULL でもかまいません。
[in] fIncludeAllSubCategories
TRUE の場合、このメソッドは pszCategory で指定されたカテゴリのすべてのサブカテゴリを再帰的に列挙し、pszCategory のすべてのサブカテゴリから関数インスタンスを含むコレクションを返します。
FALSE の場合、このメソッドは、pszCategory で指定されたカテゴリおよび pszSubCategory で指定されたサブカテゴリ内の関数インスタンスを返すように制限します。
[out] ppIFunctionInstanceCollection
要求された関数インスタンスを含む関数インスタンス コレクションを受け取る IFunctionInstanceCollection インターフェイス ポインターへのポインター。 対象となる関数インスタンスが見つからない場合、コレクションは空です。
戻り値
可能な戻り値には、次のものが含まれますが、これらに限定されません。
| リターン コード/値 | 説明 |
|---|---|
|
メソッドは正常に完了しました。 |
|
pszCategory の値が無効です。 ppIFunctionInstanceCollection パラメーターで返される値は NULL です。 |
|
メソッドは、この操作を実行するために必要なメモリを割り当てることができません。 |
|
pszCategory または pszSubCategory の値が不明です。 |
|
呼び出しは、結果を非同期的に返すプロバイダーに対して実行されました。 |
解説
一部の関数検出プロバイダーは、 IFunctionDiscoveryNotification インターフェイスを使用してクエリ結果を返します。 GetInstanceCollection では、この方法で返される関数インスタンスが見つからないので、E_PENDINGで失敗します。 クライアントは、IFunctionDiscovery インターフェイスの CreateInstanceQuery メソッドを使用して、このようなプロバイダーの関数インスタンスを検索することをお勧めします。
メソッドが成功しても、クエリ パラメーターと一致する関数インスタンスが見つからなかった場合は、 S_OK が返され、 ppFunctionInstanceCollection は空のコレクションを指します (コレクションの GetCount メソッドは 0 を返します)。
サブカテゴリ クエリは、階層化されたカテゴリと一部のプロバイダー カテゴリでのみサポートされます。 レジストリ プロバイダー、PnP-X 関連付けプロバイダー、およびパブリケーション プロバイダーは、サブカテゴリ クエリをサポートします。 カスタム プロバイダーは、サブカテゴリ クエリをサポートするように明示的に設計できます。 他のプロバイダーの場合、関数インスタンス コレクションはクエリ制約を使用してフィルター処理できます。 クエリ制約の一覧については、「 制約の定義」を参照してください。
例
次のコードは、Microsoft.Networking.Devices 名前空間の SSDP プロバイダーに関連付けられている関数インスタンスを返します。
hr = spDisco->GetInstanceCollection(FCTN_CATEGORY_NETWORKDEVICES,
FCTN_SUBCAT_NETWORKDEVICES_SSDP,
FALSE,
&spFunctionInstanceCollection);
一度に複数のインターフェイスをフィルター処理したり、サブカテゴリ クエリをサポートしていないプロバイダーでフィルター処理したりするには、 IFunctionInstanceQuery のインターフェイス制約に関するページを参照してください。
要件
| サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
| サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
| 対象プラットフォーム | Windows |
| ヘッダー | functiondiscoveryapi.h |
| [DLL] | FunDisc.dll |