[函式探索可用於需求一節中指定的作業系統。 它可能會在後續版本中改變或無法使用。]
根據類別和子類別,取得函式實例的指定集合。
語法
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 |