定義拓撲來代表裝置中的數據路徑和控制節點之後,下一個步驟是定義每個可設定針腳 的數據範圍 。 在軟體控制下,可以建立、設定並將可配置的針腳連接到波形或MIDI流。 相反地,實體連線或橋接點本身存在,且無法透過軟體控制建立或配置。
在將可設定的針腳連接作為波形或MIDI數據流的接收端或輸出端之前,必須將針腳設定為支援數據流的格式。 一般而言,接腳可以設定為接受數種資料流格式之一。 例如,PCM 波浪輸出針腳可能會接受下列 PCM 數據流參數範圍:
11.025 kHz、22.05 kHz、44.1 kHz 和 48 kHz 的取樣速率
8、16、24 和 32 位的樣本大小
從 1 到 8 的任意數目通道
針對每種可設定的針腳類型,迷你埠驅動程式會描述針腳可以處理的各種數據流數據格式。 這些參數範圍可以指定為數據範圍描述元的陣列,如下列程式代碼範例所示。
static KSDATARANGE_AUDIO PinDataRangesPcm[] =
{
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
8, // Maximum number of channels
8, // Minimum number of bits-per-sample
32, // Maximum number of bits-per-channel
11025, // Minimum rate
48000 // Maximum rate
}
};
請注意, PinDataRangesPcm
上述範例中的陣列包含類型 為 KSDATARANGE_AUDIO的單一數據範圍描述元。 一般而言,數據範圍陣列可以包含任意數目的描述元。 例如,非 PCM 音波輸出針腳可能同時支援 AC-3-over-S/PDIF 和 WMA Pro-over-S/PDIF 格式。 這兩種格式的每一種都會由個別的數據範圍描述元指定。 因此,針腳的數據範圍陣列至少會包含兩個 KSDATARANGE_AUDIO 結構。
可配置的引腳,支援來自使用 DirectMusic 或 Windows 多媒體 midiInXxx 和 midiOutXxx 函式的應用程式的音樂串流格式,將使用類型為 KSDATARANGE_MUSIC 的資料範圍描述符。
埠驅動程式會從迷你埠驅動程式取得數據範圍資訊,並盡可能使用這項資訊來處理每個針腳可支援之數據格式資訊的要求。 如果是具有簡單 PCM 數據範圍的針腳,埠驅動程式就能夠處理該針腳的交集要求。 在交集要求中,用戶端會提供一組代表數據流可能數據格式的數據範圍。 可能的話,埠驅動程式的交集處理程序會從請求中的資料範圍中選擇一個特定的資料格式,該格式也在其連接埠的資料範圍內。 這個格式代表兩組數據範圍的交集。 因此,客戶端和引腳都可以處理此格式的數據流。 對於更複雜的數據範圍,迷你埠驅動程式可以提供自己的交集處理程式,埠驅動程序接著會使用這個處理程式,而不是它自己的默認處理程式。 迷你埠驅動程式的交集處理器可以允許任何格式要求,這些要求可能難以向埠驅動程式表示為資料範圍陣列。 如需詳細資訊,請參閱 Data-Intersection 處理程式 和 多個通道音訊數據和 WAVE 檔案。