若要为波形音频流指定数据格式,KSDATAFORMAT 结构紧接着WAVEFORMATEX或KSDSOUND_BUFFERDESC结构,KSDATAFORMAT 的说明符成员相应地设置为以下两个值之一:
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
指示数据格式属于 waveIn 或 waveOut 应用程序正在使用的波形流。 在这种情况下,如果 KSDATAFORMAT 结构的 FormatSize 足够大,则在 KSDATAFORMAT 结构后面的数据格式说明符是一个 WAVEFORMATEX 结构。
KSDATAFORMAT_SPECIFIER_DSOUND
指示数据格式属于 DirectSound 应用程序正在使用的波形流。 在这种情况下,KSDATAFORMAT 结构后面的数据格式说明符是一个 KSDSOUND_BUFFERDESC 结构,其中包含一个 WAVEFORMATEX 结构。
KSDATAFORMAT_WAVEFORMATEX 结构封装了 KSDATAFORMAT 结构及其后面的 WAVEFORMATEX 结构。 同样,KSDATAFORMAT_DSOUND 结构同时封装了一个 KSDATAFORMAT 结构及其后的 DSOUND_BUFFERDESC 结构。
对于KSDATAFORMAT_WAVEFORMATEX或KSDATAFORMAT_DSOUND,结构中的最后一项是嵌入式WAVEFORMATEX结构;在KSDATAFORMAT_DSOUND的情况下,WAVEFORMATEX结构包含在嵌入式DSOUND_BUFFERDESC结构中。 在任一情况下,WAVEFORMATEX 结构可能是 WAVEFORMATEXTENSIBLE 结构的开头,在这种情况下,WAVEFORMATEX 的 wFormatTag 成员设置为 WAVE_FORMAT_EXTENSIBLE 的值。 有关详细信息,请参阅 可扩展 Wave-Format 描述符。
若要指定 MIDI 流或 DirectMusic 流的数据格式,KSDATAFORMAT 结构就足够了;它不后跟任何其他信息。
有关波形和 DirectSound 数据格式的示例,请参阅 PCM 流数据格式 和 DirectSound 流数据格式。 有关 MIDI 和 DirectMusic 数据格式的示例,请参阅 MIDI 流数据格式 和 DirectMusic 流数据格式。