Bagikan melalui


Alokator AVStream

Driver kelas AVStream menggunakan Alokator untuk mengalokasikan buffer data dalam unit yang disebut bingkai. Bingkai adalah potongan memori berkelanjutan, yang ukurannya ditentukan vendor melalui anggota AllocatorFramingKSPIN_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 default mengalokasikan memori kumpulan berdasarkan persyaratan alokator yang disediakan minidriver di anggota AllocatorFraming dari struktur KSPIN_DESCRIPTOR_EX .

Vendor dengan persyaratan alokasi khusus perangkat dapat menulis minidriver yang mencakup rutinitas alokasinya sendiri. 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 durasi, manajer grafik (misalnya, modul Proksi Streaming Kernel ) menangani pemilihan alokator. Alokator yang disediakan vendor tidak dijamin akan dipilih oleh manajer grafik.

Alokator mode kernel hanya dipilih jika koneksi 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 Stream Pointer.