Definición de tablas de Automatización
Una tabla de automatización para un filtro, un pin o un nodo es lo que describe las propiedades y los métodos admitidos por el filtro, el pin o el nodo. Si un minidriver BDA proporciona una propiedad o un controlador de métodos que ya está implementado por AVStream, la implementación del minidriver de BDA reemplaza a AVStream.
Un minidriver BDA debe definir matrices de conjuntos de propiedades y métodos y, a continuación, definir tablas de automatización para esas matrices de conjuntos para que el minidriver pueda procesar automáticamente las solicitudes. Consulte la sección Determinación de la topología de dispositivos BDA para obtener un ejemplo de cómo el minidriver también define un conjunto de propiedades al que hace referencia esta sección.
En el fragmento de código siguiente se muestran ejemplos de tablas y matrices de automatización de filtros de conjuntos de propiedades y métodos:
//
// 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
};
En el fragmento de código siguiente se muestra un ejemplo de una tabla de automatización de nodos y una matriz de conjuntos de propiedades:
//
// 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
};