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:

Diagram yang mengilustrasikan buffer yang dihasilkan.

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