Fungsi KsAllocateExtraData (ks.h)
Fungsi KsAllocateExtraData digunakan dengan IRP streaming untuk mengalokasikan buffer untuk berisi data header tambahan. Penunjuk ke buffer yang dialokasikan dikembalikan, dan buffer akhirnya harus dikosongkan oleh pemanggil.
Sintaks
KSDDKAPI NTSTATUS KsAllocateExtraData(
[in, out] PIRP Irp,
[in] ULONG ExtraSize,
[out] PVOID *ExtraBuffer
);
Parameter
[in, out] Irp
Menentukan IRP yang berisi header aliran. IRP sebelumnya harus diteruskan ke KsProbeStreamIrp untuk menyangga header.
[in] ExtraSize
Menentukan ukuran, dalam byte, memori tambahan untuk dialokasikan di antara setiap header stream. Nilai ini harus dapat diratakan pada batas delapan byte. Salinan header ditempatkan di buffer yang dikembalikan, dengan ukuran data tambahan yang disisipkan di antara setiap header. Ini harus dikosongkan oleh pemanggil.
[out] ExtraBuffer
Menunjuk ke penunjuk yang dialokasikan penelepon yang, setelah berhasil diselesaikan, menunjuk ke buffer yang dialokasikan sistem yang berisi header stream dan padding yang diminta di antaranya. Ini harus dikosongkan oleh pemanggil.
Nilai kembali
Fungsi KsAllocateExtraData mengembalikan STATUS_SUCCESS jika berhasil, atau mengembalikan kesalahan sumber daya atau akses.
Keterangan
Ketika KsAllocateExtraData berhasil diselesaikan, penunjuk ke blok memori dikembalikan yang berisi header data aliran dari IRP, yang ditentukan pada Irp, dan padding di antara setiap header ukuran yang ditentukan dalam ExtraSize. Contoh buffer yang dihasilkan seperti itu ditunjukkan di bawah ini:
Ketika buffer tambahan tidak lagi diperlukan, memori harus dikosongkan menggunakan ExFreePool.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ks.h (termasuk Ks.h) |
Pustaka | Ks.lib |
IRQL | < DISPATCH_LEVEL |