Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een BDA minidriver wordt geïnitialiseerd op dezelfde manier als andere AVStream minidrivers. De functie DriverEntry van de BDA minidriver roept de functie AVStream KsInitializeDriver aan om het stuurprogrammaobject van de BDA minidriver te initialiseren. In deze aanroep geeft de BDA minidriver een aanwijzer door aan een KSDEVICE_DESCRIPTOR structuur die kenmerken van het apparaat aangeeft, waaronder:
Een aanwijzer naar een KSDEVICE_DISPATCH structuur die de verzendtabel voor het BDA-apparaat bevat. De BDA-minidriver moet minimaal routines leveren die het apparaat creëren en starten, en specificeer deze routines respectievelijk in de Add en Start leden van de KSDEVICE_DISPATCH-structuur. De routine voor het maken van de BDA-minidriver moet geheugen toewijzen aan de apparaatklasse en verwijzen naar de KSDEVICE-structuur voor het BDA-apparaat naar deze apparaatklasse. De startroutine van de BDA minidriver moet informatie over het apparaat uit het register ophalen, informatie over het apparaat instellen en vervolgens een groep statische sjabloonstructuren registreren bij de BDA-ondersteuningsbibliotheek. Zie Een BDA Minidriver starten voor meer informatie.
Een matrix van KSFILTER_DESCRIPTOR structuren voor de afzonderlijke filtertypen die door dit apparaat worden ondersteund. Dit structuurtype beschrijft de kenmerken van een filter dat is gemaakt door een bepaalde filterfactory. U moet leden van structuren van dit type in deze matrix opgeven als u uw BDA minidriver maakt, zodat de BDA-ondersteuningsbibliotheek (Bdasup.lib) niet wordt gebruikt om de eigenschappen- en methodesets van uw BDA minidriver te verwerken. Als u uw BDA minidriver maakt zodat deze gebruikmaakt van de BDA-ondersteuningsbibliotheek, moet uw BDA minidriver in plaats daarvan de BdaCreateFilterFactory-ondersteuningsfunctie aanroepen om filterfactorydescriptors (KSFILTER_DESCRIPTOR structuren) voor uw apparaat toe te voegen. Zie Een BDA Minidriver starten voor meer informatie.
In het volgende codefragment ziet u voorbeelden van een matrix met filterdescriptors, een verzendtabel voor het BDA-apparaat en de descriptor voor het BDA-apparaat:
//
// Array containing descriptors for all filter factories
// available on the device.
//
// Note! Only used when dynamic topology is not used (that is,
// only when filters and pins are fixed). Typically, this
// is when the network provider is not present.
//
DEFINE_KSFILTER_DESCRIPTOR_TABLE(FilterDescriptors)
{
&TemplateTunerFilterDescriptor
};
//
// Device Dispatch Table
//
// Lists the dispatch routines for the major events related to
// the underlying device.
//
extern
const
KSDEVICE_DISPATCH
DeviceDispatch =
{
CDevice::Create, // Add
CDevice::Start, // Start
NULL, // PostStart
NULL, // QueryStop
NULL, // CancelStop
NULL, // Stop
NULL, // QueryRemove
NULL, // CancelRemove
NULL, // Remove
NULL, // QueryCapabilities
NULL, // SurpriseRemoval
NULL, // QueryPower
NULL // SetPower
};
//
// Device Descriptor
//
// Brings together the data structures that define the device and
// the initial filter factories that can be created on it.
// Note that because template topology structures are specific
// to BDA, the device descriptor does not include them.
// Note also that if BDA dynamic topology is used, the device
// descriptor does not specify a list of filter factory descriptors.
// If BDA dynamic topology is used, the BDA minidriver calls
// BdaCreateFilterFactory to add filter factory descriptors.
extern
const
KSDEVICE_DESCRIPTOR
DeviceDescriptor =
{
&DeviceDispatch, // Dispatch
#ifdef DYNAMIC_TOPOLOGY // network provider is present
0, // FilterDescriptorsCount
NULL, // FilterDescriptors
#else // network provider is not present
SIZEOF_ARRAY( FilterDescriptors), // FilterDescriptorsCount
FilterDescriptors // FilterDescriptors
#endif // DYNAMIC_TOPOLOGY