Using Kernel-Mode Video Transport

Kernel-mode video transport functionality is accessed by the video capture driver linking with dxapi.lib, which allows it to later call dxapi.sys. This functionality is available only when DirectDraw is loaded.

A video capture driver (for a hardware decoder) uses the DxApi function supplied with kernel-mode DirectDraw to access the DxApi interface callback functions. The DxApi function is a single entry point that accepts a function identifier, an input buffer and size, and an output buffer and size. The behavior of this function and the size and format of the input and output buffers depend on the specified function identifier. The DxApi function and its function identifiers are defined in ddkmapi.h.

DirectShow or another client accesses the DxApi interface callback functions supplied by the video miniport driver through DirectDraw. The DxApi interface callback functions are defined in dxmini.h.

To use the kernel-mode video transport interface, the video capture driver must first receive user-mode handles for each DirectDraw object, surface, and VPE object that it needs to use. For the capture and MPEG models, these handles are passed down using their existing APIs. If a driver requires this functionality but is not a stream-class driver, a user-mode component can retrieve the handles using the IDirectDrawKernel and IDirectDrawSurfaceKernel COM interfaces and pass them down to the driver. The COM interfaces and their methods are identified in ddkernel.h.