Pin Data-Range and Intersection Properties
Several property requests provide information about the data formats for the audio streams that an audio device is capable of handling at its input and output pins.
The audio-stream data formats that a pin is capable of supporting are expressed in a KSMULTIPLE_ITEM array of KSDATARANGE-derived structures. Pin data-range support is exposed through the following three KSPROPSETID_Pin properties on the filter:
KSPROPERTY_PIN_DATARANGES This property reports data ranges that are static and represent all possible formats supported. Typically, data ranges are contained in a static array in the adapter driver. KSPROPERTY_PIN_CONSTRAINEDDATARANGES This property reports data ranges that are dynamic and represent the subset of formats supported at the time of the property request. The property handler should contain the logic to decide which formats the pin is capable of supporting at run time. For example, a hardware implementation could have DMA constraints that do not allow support for full-duplex in certain format combinations. KSPROPERTY_PIN_DATAINTERSECTION This property selects a data format from a list of data ranges. Selection is based on dynamic capabilities and the format is taken from the subset of formats that the driver can support at the time of the property request. To use this property, the caller supplies an array of data ranges. Beginning at the first element, the property handler searches the array until it finds a data range that it is currently capable of supporting. If successful, the handler outputs a data format that is taken from that data range and returns STATUS_SUCCESS. Otherwise, the handler returns STATUS_NO_MATCH. The audio-system components use the KSPROPERTY_PIN_DATARANGES and KSPROPERTY_PIN_DATAINTERSECTION properties. Miniport drivers should support these properties. Support for KSPROPERTY_PIN_CONSTRAINEDDATARANGES is optional.
For more information, see Audio Data Formats and Data Ranges.
Note The KSPROPERTY_PIN_DATARANGES and KSPROPERTY_PIN_CONSTRAINEDDATARANGES each begin on an 8-byte-aligned address.