Pengalokasi AVStream

Driver kelas AVStream menggunakan Alokator untuk mengalokasikan buffer data dalam unit yang disebut bingkai. Bingkai adalah bagian dari memori berkelanjutan secara kontinu, yang ukurannya ditentukan oleh vendor melalui anggota AllocatorFraming dari KSPIN_DESCRIPTOR_EX.

Minidriver mengakses buffer ini melalui STREAM Pointers API; panggil KsPinGetLeadingEdgeStreamPointer untuk memperoleh pointer ke aliran.

Klien AVStream dapat memperoleh informasi tentang persyaratan pembingkaian pin dengan menggunakan properti baca-saja KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Properti ini mengembalikan struktur jenis KSALLOCATOR_FRAMING_EX yang menjelaskan persyaratan pembingkaian untuk pin.

Ketika data tidak lagi digunakan, AVStream menggunakan alokator untuk membebaskan buffer.

AVStream menyediakan alokator default. Alokator bawaan mengalokasikan memori pool berdasarkan persyaratan yang ditetapkan oleh minidriver di dalam anggota AllocatorFraming dari struktur KSPIN_DESCRIPTOR_EX.

Penyedia dengan persyaratan alokasi spesifik perangkat dapat membuat minidriver dengan rutinitas alokasi tersendiri. Misalnya, Anda mungkin menyediakan alokator jika driver Anda mengalokasikan memori dari buffer DMA umum.

Untuk menyediakan alokator, berikan struktur KSALLOCATOR_DISPATCH yang berisi pointer ke rutinitas panggilan balik yang disediakan vendor berikut:

Berikan penunjuk ke struktur pengiriman alokator ini di anggota Alokator struktur KSPIN_DISPATCH yang menjelaskan pin tempat alokator ini akan membuat instans bingkai.

Berikan pointer ke struktur pengiriman pin ini di anggota Pengiriman dari struktur KSPIN_DESCRIPTOR_EX yang sesuai. Untuk mempelajari selengkapnya tentang struktur pengiriman di AVStream, baca Tabel Pengiriman AVStream.

Pada waktu proses, manajer grafik (misalnya, modul Proksi Streaming Kernel ) menangani pemilihan alokator. Alokator yang disediakan vendor tidak dijamin dipilih oleh manajer grafik.

Alokator mode kernel dipilih hanya jika koneksi berada dalam mode kernel. Selain itu, alokator Anda dapat ditolak jika ada ketidakcocokan dalam persyaratan alokator dan kemampuan alokator Anda. Jika alokator Anda tidak dipilih, rutinitas panggilan balik AVStrMiniInitializeAllocator Anda tidak pernah dipanggil.

Lihat juga Layanan AVStream DMA dan Penunjuk Aliran.