Fungsi KsAllocateDeviceHeader (ks.h)
Fungsi KsAllocateDeviceHeader mengalokasikan dan menginisialisasi header ekstensi perangkat yang diperlukan.
Sintaks
KSDDKAPI NTSTATUS KsAllocateDeviceHeader(
[out] KSDEVICE_HEADER *Header,
[in] ULONG ItemsCount,
[in, optional] PKSOBJECT_CREATE_ITEM ItemsList
);
Parameter
[out] Header
Menunjuk ke lokasi untuk mengembalikan penunjuk ke header yang diinisialisasi.
[in] ItemsCount
Menentukan jumlah subitem dalam Daftar Item. Ini harus nol jika ItemList tidak diteruskan.
[in, optional] ItemsList
Opsional. Menunjuk ke struktur KSOBJECT_CREATE_ITEM untuk setiap subitem. Jika tidak ada subitem, nilai ini harus NULL dan ItemsCount harus nol.
Mengembalikan nilai
Fungsi KsAllocateDeviceHeader mengembalikan STATUS_SUCCESS jika berhasil atau STATUS_INSUFFICIENT_RESOURCES jika tidak dapat mengalokasikan sumber daya yang diperlukan.
Keterangan
Fungsi KsAllocateDeviceHeader mengalokasikan memori untuk struktur KSDEVICE_HEADER untuk perangkat. Ketika header tidak lagi diperlukan, driver harus memanggil fungsi KsFreeDeviceHeader untuk membebaskan memori yang dialokasikan.
Jika subobject ada untuk perangkat tertentu, driver harus, sebelum memanggil KsAllocateDeviceHeader, alokasikan buffer memori paged atau nonpaged dengan ukuran yang cukup untuk menyimpan struktur KSOBJECT_CREATE_ITEM untuk setiap subobject. Contohnya:
/* Allocate a buffer for 4 subobjects for a given streaming device */
PKSOBJECT_CREATE_ITEM createBuffer ;
ULONG bufferSize = (sizeof (KSOBJECT_CREATE_ITEM)) * 4 ;
createBuffer = (PKSOBJECT_CREATE_ITEM)
ExAllocatePoolWithTag (PagedPool, bufferSize) ;
Driver tidak boleh membebaskan memori yang dialokasikan untuk daftar KSOBJECT_CREATE_ITEM subobject hingga setelah memanggil KsFreeDeviceHeader. Kegagalan untuk melakukannya dapat mengakibatkan kondisi pemeriksaan bug.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | ks.h (termasuk Ks.h) |
Pustaka | Ks.lib |
IRQL | < DISPATCH_LEVEL |