次の方法で共有


既定のデータ交差ハンドラー

アダプターの独自のデータ交差ハンドラー (ミニポート ドライバー オブジェクトの IMiniport::D ataRangeIntersection メソッド) は、STATUS_NOT_IMPLEMENTED 状態コードを返すことによって、データ交差チェックの実行を拒否できます。 この場合、ポート ドライバーの既定のデータ交差ハンドラーが、アダプターの代わりにチェックを実行します。

STATUS_NOT_IMPLEMENTED を返すことによってすべてのデータ交差要求を拒否する DataRangeIntersection メソッドとして、アダプター ドライバーの最小データ交差ハンドラーを実装できます。

ポート ドライバーの既定のハンドラーの現在の実装は、処理できるデータ範囲の種類に制限があります。

  • PCM データ形式のみ

  • モノラル オーディオ ストリームとステレオ オーディオ ストリームのみ

非 PCM 形式またはマルチチャネル形式をサポートするアダプター ドライバーは、ポート ドライバーに依存してこれらの形式のデータ交差を処理するのではなく、独自のデータ交差ハンドラーを実装する必要があります。

さらに、既定のハンドラーでは、KSDATAFORMAT_DSOUND または KSDATAFORMAT_WAVEFORMATEX 構造体で指定できるオーディオ形式のみがサポートされます。 WAVEFORMATEXTENSIBLE 構造体を含む形式はサポートされていません。これは、たとえば、2 つ以上のチャンネルを持つ形式のチャンネル マスクを指定するために必要です。

2 つのデータ範囲間の交差部分から共通の形式を選択する場合、ポート ドライバーの既定のハンドラーは常に、各パラメーターの交差領域の最大値を選択します。

  • 交差部分が複数の有効なサンプル周波数 (11、22、44 kHz など) にまたがる場合、既定のハンドラーは最も高い周波数を選択します。

  • 積集合が複数の有効なサンプル値 (8、16、32 ビットなど) にまたがる場合は、既定のハンドラーは最大値を選択します。

  • 交差部分がモノラル形式とステレオ形式の両方にまたがる場合、既定のハンドラーはステレオを選択します。

既定のハンドラーが不十分な形式を選択した場合、SysAudio が形式でシンク ピンを作成しようとしたときに、アダプター ドライバーは NewStream 呼び出しに失敗して形式を拒否するオプションを持ちます (例として「IMiniportWavePci::NewStream」を参照)。 呼び出しが失敗した場合、SysAudio はデータの交差部分を探し続けません。 代わりに、KMixer などのシステム フィルターでサポートされている PCM 形式の一覧を反復処理して、アダプターのシンク ピンでサポートできる形式が見つかるまで、接続の作成を試みます。 このリストは、高音質の形式から順番に並べられます。 前述のように、アダプターは、これらの形式に対する NewStream 呼び出しに失敗することで、リスト内の不十分な形式を拒否します。