Handler Data-Intersection default

Handler persimpangan data milik adaptor (metode IMiniport::D ataRangeIntersection objek driver miniport) dapat menolak untuk melakukan pemeriksaan persimpangan data dengan mengembalikan kode status STATUS_NOT_IMPLEMENTED. Dalam hal ini, pengelola interseksi data default dari driver port melakukan pemeriksaan mewakili adaptor.

Anda dapat menerapkan handler persimpangan data minimal untuk driver adaptor Anda sebagai metode DataRangeIntersection yang menolak semua permintaan persimpangan data dengan mengembalikan STATUS_NOT_IMPLEMENTED.

Implementasi penangan default dari driver port saat ini terbatas pada jenis rentang data yang dapat ditanganinya:

  • Hanya format data PCM

  • Hanya aliran audio mono dan stereo

Driver adaptor penggerak yang mendukung format non-PCM atau multisaluran harus mengimplementasikan penangan persimpangan data khusus alih-alih mengandalkan driver port dalam menangani persimpangan data untuk format-format tersebut.

Selain itu, handler default hanya mendukung format audio yang dapat ditentukan oleh struktur KSDATAFORMAT_DSOUND atau KSDATAFORMAT_WAVEFORMATEX . Ini tidak mendukung format apa pun yang berisi struktur WAVEFORMATEXTENSIBLE , yang diperlukan, misalnya, untuk menentukan masker saluran untuk format dengan lebih dari dua saluran.

Saat memilih format umum dari perpotongan antara dua rentang data, handler default driver port selalu memilih nilai tertinggi di daerah perpotongan setiap parameter.

  • Jika persimpangan mencakup lebih dari satu frekuensi sampel yang valid (11, 22, dan 44 kHz, misalnya), handler default memilih frekuensi tertinggi.

  • Jika persimpangan mencakup lebih dari satu nilai bit per sampel yang valid (8, 16, dan 32 bit, misalnya), handler default memilih nilai terbesar.

  • Jika persimpangan mencakup format mono dan stereo, handler default akan memilih stereo.

Jika penangan default memilih format yang tidak memuaskan, driver adaptor memiliki opsi untuk menolak format dengan membatalkan panggilan NewStream (misalnya, lihat IMiniportWavePci::NewStream) saat SysAudio mencoba membuat pin sink dengan format tersebut. Jika panggilan gagal, SysAudio tidak akan terus mencari persimpangan data. Sebaliknya, ia akan mencoba membuat koneksi dengan melakukan iterasi melalui daftar format PCM yang didukung oleh filter sistem seperti KMixer sampai menemukan salah satu yang dapat didukung pin sink adaptor. Daftar diurutkan dengan format kualitas yang lebih tinggi terlebih dahulu. Seperti sebelumnya, adaptor menolak format yang tidak memuaskan dalam daftar dengan gagal memanggil NewStream untuk format tersebut.