Applications access video and video/audio devices on Windows platforms via the DirectShow API. If you have an AVStream driver, Windows provides a ksproxy filter for it in user mode. But you can also provide a custom DirectShow filter that accesses your driver via custom IOCTLs or via a user-mode library.
As a result, there are a number of choices for driver developers:
- AVStream is the recommended model. The developer creates a WDM mini-driver to acccess the device. The communication with Kernel Streaming is managed by the AVStream library and the ksproxy filter provides a user-mode DirectShow filter. Read more here.
- Older drivers use the Stream Class or Port Class drivers with Kernel Stream. For the difference between the KS class driver models, see here.
- A custom DirectShow filter that has a private communication mechanism to the device. This is often used where the device manufacturer supplies only a user-mode API for accessing the device. Provided that the filter is registered in the correct category, most applications will be happy to use this filter. To demonstrate this, I've created a version of the Ball source filter sample that registers itself as a video capture device. Download the sample here.