自動化テーブルの定義
フィルター、ピン、またはノードのオートメーション テーブルは、フィルター、ピン、またはノードでサポートされるプロパティとメソッドについて説明します。 BDA ミニドライバーが AVStream が既に実装しているプロパティまたはメソッド ハンドラーを提供する場合、BDA ミニドライバーの実装は AVStream の実装よりも優先されます。
BDA ミニドライバーは、ミニドライバーが自動的に要求を処理できるように、プロパティ セットとメソッド セットの配列を定義し、それらのセット配列のオートメーション テーブルを定義する必要があります。 ミニドライバーはこのセクションが参照するプロパティ セットを定義する方法の例については、「BDA デバイス トポロジの決定」セクションを参照してください。
次のコード スニペットは、フィルター自動化テーブルの例、プロパティ セットとメソッド セットの配列を示しています。
//
// Filter Level Property Set supported
//
// This array defines a property set supported by the
// filter that is exposed by the minidriver.
//
DEFINE_KSPROPERTY_SET_TABLE(FilterPropertySets)
{
DEFINE_KSPROPERTY_SET
(
&KSPROPSETID_BdaTopology, // Set
SIZEOF_ARRAY(FilterTopologyProperties), // PropertiesCount
FilterTopologyProperties, // PropertyItems
0, // FastIoCount
NULL // FastIoTable
)
};
//
// Filter Level Method Sets supported
//
// This array defines method sets supported by the
// filter that is exposed by the minidriver.
//
DEFINE_KSMETHOD_SET_TABLE(FilterMethodSets)
{
DEFINE_KSMETHOD_SET
(
&KSMETHODSETID_BdaChangeSync, // Set
SIZEOF_ARRAY(BdaChangeSyncMethods), // MethodsCount
BdaChangeSyncMethods, // MethodItems
0, // FastIoCount
NULL // FastIoTable
),
DEFINE_KSMETHOD_SET
(
&KSMETHODSETID_BdaDeviceConfiguration, // Set
SIZEOF_ARRAY(BdaDeviceConfigurationMethods),// MethodsCount
BdaDeviceConfigurationMethods, // MethodItems
0, // FastIoCount
NULL // FastIoTable
)
};
//
// Filter Automation Table
//
// Lists all arrays of property and method sets for the filter that
// is exposed by the minidriver.
//
DEFINE_KSAUTOMATION_TABLE(FilterAutomation) {
DEFINE_KSAUTOMATION_PROPERTIES(FilterPropertySets),
DEFINE_KSAUTOMATION_METHODS(FilterMethodSets),
DEFINE_KSAUTOMATION_EVENTS_NULL
};
次のコード スニペットは、ノード自動化テーブルとプロパティ セットの配列の例を示しています。
//
// RF tuner node property set supported
//
// This array defines a property set supported by the
// RF Tuner Node associated with the antenna input pin.
//
DEFINE_KSPROPERTY_SET_TABLE(RFNodePropertySets)
{
DEFINE_KSPROPERTY_SET
(
&KSPROPSETID_BdaFrequencyFilter, // Set
SIZEOF_ARRAY(RFNodeFrequencyProperties), // PropertiesCount
RFNodeFrequencyProperties, // PropertyItems
0, // FastIoCount
NULL // FastIoTable
)
};
//
// Radio frequency tuner node automation table
//
//
DEFINE_KSAUTOMATION_TABLE(RFTunerNodeAutomation) {
DEFINE_KSAUTOMATION_PROPERTIES( RFNodePropertySets),
DEFINE_KSAUTOMATION_METHODS_NULL,
DEFINE_KSAUTOMATION_EVENTS_NULL
};