デバイスのデータ パスと制御ノードを表すトポロジを定義した後、次の手順では、構成可能な各ピンの データ範囲 を定義します。 構成可能なピンは、ソフトウェア制御下でウェーブまたは 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 形式の両方がサポートされる場合があります。 これら 2 つの形式はそれぞれ、個別のデータ範囲記述子によって指定されます。 したがって、ピンのデータ範囲配列には、少なくとも 2 つのKSDATARANGE_AUDIO構造体が含まれます。
DirectMusic または Windows マルチメディア midiInXxx および midiOutXxx 関数を使用するアプリケーションからの音楽ストリーム形式をサポートする構成可能なピンは、 KSDATARANGE_MUSIC型のデータ範囲記述子を使用します。
ポート ドライバーは、ミニポート ドライバーからデータ範囲の情報を取得し、可能な限り、この情報を使用して、各ピンがサポートできるデータ形式に関する情報の要求を処理します。 単純な PCM データ範囲を持つピンの場合、ポート ドライバーはそのピンの交差要求を処理できます。 交差要求では、クライアントはストリームのデータ形式を表す一連のデータ範囲を提供します。 可能であれば、ポート ドライバーの交差ハンドラーは、要求のデータ範囲から特定のデータ形式を選択します。このデータ形式は、ピンのデータ範囲にも含まれます。 この形式は、2 セットのデータ範囲の積集合を表します。 そのため、クライアントとピンの両方で、この形式でストリームを処理できます。 より複雑なデータ範囲の場合、ミニポート ドライバーは独自のインターセクション ハンドラーを提供でき、ポート ドライバーはそれを独自の既定のハンドラーの代わりに使用します。 ミニポート ドライバーの交差ハンドラーは、データ範囲の配列としてポート ドライバーに表現することが困難な可能性がある任意の形式の要件を許可できます。 詳細については、「 Data-Intersection ハンドラー と 複数チャネル オーディオ データおよび WAVE ファイル」を参照してください。