判斷 BDA 裝置拓撲
BDA 裝置拓撲是由節點的連線網路所組成,每個網路都代表訊號上的一些轉換。 節點可以在不同的篩選之間任意分組。 此任意群組提供硬體廠商實作其硬體和驅動程式的方式,讓這類硬體和驅動程式以一般方式與網路提供者合作,以取得他們想要支援之不同類型的網路。
若要讓此任意群組架構能夠運作,網路提供者必須能夠查詢篩選準則,以瞭解這些篩選在訊號 (上執行的轉換類型,也就是篩選可支援) 的節點網路類型。 篩選的基礎 Ring 0 迷你驅動程式會透過 KSPROPSETID_BdaTopology 屬性集,將支援的節點網狀圖片傳達給網路提供者。
判斷篩選準則的範本拓撲時,網路提供者會逐一查看節點類型和釘選類型的清單,並查詢每個節點並釘選其功能。 網路提供者會使用下列KSPROPSETID_BdaTopology屬性來判斷篩選的範本拓撲:
KSPROPERTY_BDA_NODE_TYPES
節點類型代表篩選準則內的可能功能節點。 KSPROPERTY_BDA_NODE_TYPES 屬性會傳回 BDA 迷你驅動程式篩選實例所提供的所有節點類型清單。 minidriver 會指派任意值來識別節點類型。 一般而言,minidriver 會使用 minidriver 節點類型清單中每個元素的索引作為每個節點類型的值。 BDA 迷你驅動程式會指派每個節點類型一個節點描述 GUID。 網路提供者目前支援的節點類型描述 GUID 定義于 bdamedia.h中。 此節點描述會向網路提供者指出節點的功能。 在範本拓撲中,節點類型只能發生一次。 不過,特定類型的多個節點可能會有相同的節點描述 GUID。 這可讓特定訊號轉換在篩選拓撲中的多個位置發生,同時允許網路提供者明確識別單一拓撲節點。
KSPROPERTY_BDA_PIN_TYPES
針腳類型代表圖形中其他篩選準則的可能連線。 KSPROPERTY_BDA_PIN_TYPES 屬性會傳回可在篩選上建立的所有針腳類型清單。 在範本拓撲中,釘選類型只能發生一次。
KSPROPERTY_BDA_TEMPLATE_CONNECTIONS
KSPROPERTY_BDA_TEMPLATE_CONNECTIONS 屬性會傳回陣列,代表節點類型與可在篩選上設定之針腳類型之間的所有可能連線。 如需詳細資訊,請參閱 對應連線拓撲 。
第一次建立篩選實例並新增至圖形時,它通常會有輸入針腳,但沒有輸出針腳。 若要建立輸出針腳,網路提供者會先使用KSPROPSETID_BdaTopology屬性來判斷篩選可以執行的作業。 從這些屬性中,網路提供者會決定需要篩選準則來執行特定篩選圖形的作業。 然後,網路提供者會使用 KSMETHODSETID_BdaDeviceConfiguration 方法來建立符合特定針腳類型的輸出針腳,並建立內部拓撲,也就是這些針腳與輸入針腳之間的實際硬體路徑。 如需詳細資訊 ,請參閱設定 BDA 篩選 。
下列程式碼片段示範如何將 BDA 支援程式庫匯出的函式定義為KSPROPSETID_BdaTopology屬性集的分派常式:
//
// KSPROPSETID_BdaTopology property set
//
// Defines the dispatch routines for the filter level
// topology properties
//
DEFINE_KSPROPERTY_TABLE(FilterTopologyProperties)
{
DEFINE_KSPROPERTY_ITEM_BDA_NODE_TYPES(
BdaPropertyNodeTypes,
NULL
),
DEFINE_KSPROPERTY_ITEM_BDA_PIN_TYPES(
BdaPropertyPinTypes,
NULL
),
DEFINE_KSPROPERTY_ITEM_BDA_TEMPLATE_CONNECTIONS(
BdaPropertyTemplateConnections,
NULL
),
DEFINE_KSPROPERTY_ITEM_BDA_CONTROLLING_PIN_ID(
BdaPropertyGetControllingPinId,
NULL
)
};