Proprietary Data-Intersection Handlers

You can overcome the limitations of the default data-intersection handler by writing a proprietary handler for your adapter. A proprietary handler is implemented as the IMiniport::DataRangeIntersection method on a miniport driver object. See the sample adapter drivers in the Microsoft Windows Driver Kit (WDK) for examples of DataRangeIntersection methods.

A proprietary data-intersection handler can compensate for nonstandard hardware features that cannot be adequately specified in the KSDATARANGE_AUDIO structure. For example, the AC97 sample adapter driver in the WDK manages hardware that can support two or more audio channels during playback, but cannot support mono. The sample's DataRangeIntersection method determines whether the data range for the other filter's source pin is limited to mono (that is, MaximumChannels < 2). If so, it fails the call by returning STATUS_NO_MATCH.

A proprietary data-intersection handler has the option of handling data intersections on some of its pins and allowing the port driver's default data-intersection handler to handle data intersections on the other pins.

The remainder of this section presents guidelines for implementing proprietary data-intersection handlers.