共用方式為


判斷 BDA 裝置拓撲

BDA 裝置拓撲是由一個連線的節點網路所組成,每個網路都代表訊號上的一些轉換。 節點可以在不同的篩選之間任意分組。 此任意群組可讓硬體廠商在實作硬體和驅動程式的方式上提供特定自由,讓這類硬體和驅動程式以一般方式與網路提供者合作,以取得他們想要支援的各種網路類型。

若要讓此任意群組架構運作,網路提供者必須能夠查詢篩選條件,瞭解這些篩選在訊號上執行的轉換類型(也就是篩選條件可支援的節點網路類型)。 篩選器的基礎 Ring 0 迷你驅動程式會透過 KSPROPSETID_BdaTopology 屬性集,將支援的節點網路拓撲結構傳達給網路提供者。

判斷篩選器的模板拓撲時,網路提供者會逐一查看節點類型和接腳類型的清單,並查詢每個節點和接腳的功能。 網路提供者會使用下列KSPROPSETID_BdaTopology屬性來判斷篩選的範本拓撲:

  • KSPROPERTY_BDA_NODE_TYPES

    節點類型代表篩選條件內的可能功能節點。 KSPROPERTY_BDA_NODE_TYPES 屬性會傳回 BDA 迷你驅動程式之篩選實例所提供的所有節點類型清單。 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
        )
};