Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Minidriver BDA jest inicjowany podobnie do innych minidriverów AVStream. Funkcja DriverEntry minidrivera BDA wywołuje funkcję AVStream KsInitializeDriver w celu zainicjowania obiektu sterownika minidrivera BDA. W tym wywołaniu minidriver BDA przekazuje wskaźnik do struktury KSDEVICE_DESCRIPTOR , która określa cechy urządzenia, które mogą obejmować:
Wskaźnik do struktury KSDEVICE_DISPATCH zawierającej tabelę wysyłania dla urządzenia BDA. Co najmniej minidriver BDA powinien dostarczyć procedury, które tworzą i uruchamiają urządzenie i określają te procedury odpowiednio w strukturze dodawania i uruchamiania KSDEVICE_DISPATCH. Procedura tworzenia minidrivera BDA powinna przydzielić pamięć dla klasy urządzenia i odnosić wskaźnik do struktury KSDEVICE dla urządzenia BDA dla tej klasy urządzenia. Procedury uruchamiania minidrivera BDA powinny uzyskać informacje o urządzeniu z rejestru, ustawić informacje o urządzeniu, a następnie zarejestrować grupę statycznych struktur szablonów w bibliotece obsługi BDA. Aby uzyskać więcej informacji, zobacz Uruchamianie minidrivera BDA .
Tablica struktur KSFILTER_DESCRIPTOR dla poszczególnych typów filtrów obsługiwanych przez to urządzenie. Ten typ struktury opisuje charakterystykę filtru utworzonego przez daną fabrykę filtrów. Należy określić elementy członkowskie struktur tego typu w tej tablicy, jeśli tworzysz minidriver BDA tak, aby nie używał biblioteki obsługi BDA (Bdasup.lib) do obsługi właściwości i zestawów metod BDA. Jeśli tworzysz minidriver BDA, który korzysta z biblioteki obsługi BDA, powinien on wywołać funkcję obsługi BdaCreateFilterFactory, aby dodać deskryptory fabryki filtrów (struktury KSFILTER_DESCRIPTOR) dla swojego urządzenia. Aby uzyskać więcej informacji, zobacz Uruchamianie minidrivera BDA .
Poniższy fragment kodu przedstawia przykłady tablicy deskryptorów filtrów, tabeli wysyłki dla urządzenia BDA i deskryptora dla urządzenia BDA:
//
// 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