離散値を含むデータ範囲

たとえば、オーディオ デバイスが 11、22、44 kHz のサンプル周波数をサポートしている場合は、1 つの KSDATARANGE_AUDIO 構造体で 11 ~ 44 kHz の範囲として 3 つの周波数すべてを指定することができます。 この手法の利点は、簡潔である点です。 潜在的な欠点は、バグのあるデータ交差ハンドラーが、範囲内にある無効なパラメーター値 (たとえば、27 kHz など) を選択する可能性があることです。 この場合、アダプター ドライバーには、無効な形式のピンの作成を試みる NewStream 呼び出し (例については、「IMiniportWavePci::NewStream」を参照) を失敗させる以外の選択肢がありません。

もう 1 つの手法としては、各データ範囲が各パラメーターの値の範囲ではなく個別の値を指定する、データ範囲の一覧を提供することができます。 たとえば、11 ~ 44 kHz のサンプル周波数範囲を指定する単一のデータ範囲を提供する代わりに、データ範囲配列には、11、22、44 kHz の 3 つの個別の要素を含めることができます。 これらの各要素では、最大および最小のサンプル周波数が同じ値 (11、22、または 44 kHz) に設定されます。 この手法の利点は、サポートされている正確な値に関するあいまいさを排除できることです。 また、ある離散値が別の値よりも優先される場合は、この値を含むデータ範囲を、他の値を含むデータ範囲よりも前の配列の位置に移動させることができます。 離散値の微細な欠点は、データ範囲配列のサイズが大きくなることです。