Multi-function drivers

Hi,

I’ve recently started driver work and for a first stab modified the PLX PCI driver to achieve some system improvements from our software that controls our bespoke PCI card. Loosely speaking it does audio/video capture and playback (it’s a lot more complicated than that but to explain all of it would take forever).

I’m now looking at writing a new driver for a new card but the functionality will be fairly similar. I’m hoping to be able to create an AVStream driver with a set of filters to capture and output video and audio in various formats BUT the card has a lot of common controls that will affect all the filters if they are changed.

Having had a good poke around the samples I think I can create a symbolic-link in the DriverEntry as well as calling KsInitializeDriver. I can then use the sym-link to accept card-specific IOCTLs and still have a Filter Factory which can produce the various I/O filters. Does this sound sensible ? Is it valid to have an Ioctl-handling base for a Filter driver ?

If it is, do I have to keep track of all the open filters so I can signal them if something card-specific changes ? Or is there some other way of doing this ? I guess I can keep a list of them in the DeviceExtension but this seems inelegant ? I feel I’m missing the method for tracking underlying hardware from Filters.

I have also heard that AVStream has been superceded by a new whizzier interface but I can’t find any reference to it on the MSDN site - should I be looking at a different system for a new driver ?

Any suggestions welcomed.

Graeme Griffiths
Image Processing Techniques Ltd