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

Lihat juga

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader