判斷節點的控制釘選
不同于篩選和釘選,節點沒有相關聯的檔案控制代碼,而 Ring 3 中的應用程式可以存取它們。 因為節點是篩選內的內部元件,所以它們存在於篩選準則的輸入和輸出針腳之間的某處。 網路提供者必須判斷要使用的篩選釘選,然後使用針腳來存取節點。 此篩選針腳稱為該節點的控制針腳。 若要判斷篩選準則 BDA 範本連線清單中的每個節點的控制釘選,網路提供者會查詢KSPROPSETID_BdaTopology屬性集的 KSPROPERTY_BDA_CONTROLLING_PIN_ID 屬性。 BDA 迷你驅動程式接著會呼叫每個節點的 BdaPropertyGetControllingPinId 支援函式。 在此呼叫中,迷你驅動程式會將指標傳遞至 KSP_BDA_NODE_PIN 結構。 這個結構會識別屬性要求,以擷取特定節點類型的控制針腳,以及一對篩選準則的輸入和輸出針腳。 BDA 支援程式庫會傳回節點類型控制針腳的識別碼。
BDA 迷你驅動程式通常不會攔截KSPROPERTY_BDA_CONTROLLING_PIN_ID屬性。 minidriver 會自動從 KSPROPSETID_BdaTopology 屬性集分派 BdaPropertyGetControllingPinId 支援函式。 如需詳細資訊,請參閱 判斷 BDA 裝置拓撲 。
支援程式庫能夠執行判斷控制針腳識別碼的所有工作,因為 BDA 迷你驅動程式會在 BDA 迷你驅動程式開始運作時,為支援程式庫提供支援程式庫,並提供 BDA_FILTER_TEMPLATE 結構的指標。 如需詳細資訊 ,請參閱啟動 BDA Minidriver 。 BDA 迷你驅動程式會通知 BDA 支援程式庫如何透過包含在BDA_FILTER_TEMPLATE中的資訊來判斷控制針腳。 此資訊包括:
連接陣列。 此陣列是 KSTOPOLOGY_CONNECTION 陣列,可提供節點與針腳類型之間所有可能連線的標記法,這些連接可在篩選準則內或篩選準則與相鄰篩選之間建立。 如需KSTOPOLOGY_CONNECTION陣列的詳細資訊,請參閱 對應連線拓撲 。
聯合值的陣列。 聯結是拓撲中的一個點,其中一個輸入分割成一或多個不同輸出的路徑,或一或多個輸入聯結至單一輸出路徑。 提供給聯合的值會對應至KSTOPOLOGY_CONNECTION陣列中專案的索引。 大部分拓撲只會有一個聯合。
BDA_PIN_PAIRING結構的陣列。 這些結構會識別輸入和輸出針腳類型、可在篩選上建立的輸入類型實例數目上限,以及可在篩選上建立的輸出類型實例數目上限。 這些結構也包含輸入和輸出針腳之間聯結值的陣列指標。 如需BDA_PIN_PAIRING陣列的詳細資訊,請參閱 啟動 BDA Minidriver 。
下圖顯示支援程式庫如何決定控制特定節點的篩選準則釘選: