Bagikan melalui


fungsi _KsEdit (ks.h)

Fungsi KsEdit menjamin bahwa item tertentu dialokasikan secara dinamis dan terkait dengan objek AVStream melalui tas objek.

Sintaksis

KSDDKAPI NTSTATUS _KsEdit(
  [in]      KSOBJECT_BAG ObjectBag,
  [in, out] PVOID        *PointerToPointerToItem,
  [in]      ULONG        NewSize,
  [in]      ULONG        OldSize,
  [in]      ULONG        Tag
);

Parameter

[in] ObjectBag

KSOBJECT_BAG (setara dengan jenis PVOID) untuk digunakan dalam pemeriksaan. Jika item tidak terkandung dalam tas objek, KsEdit secara dinamis mengalokasikan memori yang cukup untuk item, menyalin konten lama, dan menempatkan memori yang baru dialokasikan dalam tas objek ini.

[in, out] PointerToPointerToItem

Penunjuk ke penunjuk ke item yang sedang diedit.

[in] NewSize

Jumlah byte yang akan dialokasikan untuk item.

[in] OldSize

Jumlah byte yang saat ini dibutuhkan item.

[in] Tag

Berisi tag kumpulan yang akan digunakan untuk alokasi. Driver biasanya menentukan tag kumpulan sebagai string hingga empat karakter, dibatasi oleh tanda kutip tunggal. String biasanya ditentukan dalam urutan terbalik. Nilai ASCII dari setiap karakter dalam tag harus antara 0 dan 127.

Mengembalikan nilai

Mengembalikan keberhasilan atau STATUS_INSUFFICIENT_RESOURCES.

Komentar

Perhatikan bahwa KsEdit dan KsEditSized adalah makro yang dibuat untuk membuat _KsEdit lebih mudah digunakan. Meskipun _KsEdit memungkinkan Anda mengubah ukuran item, KsEdit tidak. Makro KsEdit memanggil _KsEdit, menentukan ukuran (** PointerToPointerToItem) sebagai kedua ukuran.

Misalnya, pertimbangkan pin yang perlu memodifikasi pembingkaian alokatornya pada pembuatan. Karena deskriptor dikodekan secara statis dan pin baru dapat menggunakannya, solusinya adalah memodifikasi deskriptor pin sebagai berikut:

KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;

Panggilan ke KsEdit menjamin bahwa Pin->Deskriptor adalah memori dinamis yang terkait dengan Pin. Perhatikan bahwa modifikasi deskriptor dan struktur AVStream lainnya dapat menyebabkan hasil yang tidak diinginkan. Minidriver harus berhati-hati saat menggunakan KsEdit pada struktur AVStream.

panggilan KsEditSized _KsEdit dengan parameter yang sama dengan yang diterimanya, kecuali Objek digantikan oleh Tas>Objek dan pointer diketik ke PVOID.

Perhatikan bahwa saat memanggil _KsEdit, penelepon harus menahan mutex yang terkait dengan tas. Untuk informasi selengkapnya, lihat Object Bags dan Mutexes di AVStream.

Persyaratan

Syarat Nilai
klien minimum yang didukung Tersedia di Microsoft Windows XP dan sistem operasi yang lebih baru dan DirectX 8.0 dan versi DirectX yang lebih baru.
Platform Target Universal
Header ks.h (termasuk Ks.h)
Pustaka Ks.lib
IRQL PASSIVE_LEVEL