Bagikan melalui


Fungsi FltAllocatePoolAlignedWithTag (fltkernel.h)

FltAllocatePoolAlignedWithTag mengalokasikan buffer yang selaras dengan perangkat untuk digunakan dalam operasi I/O yang tidak di-cache.

Sintaks

PVOID FLTAPI FltAllocatePoolAlignedWithTag(
  [in] PFLT_INSTANCE Instance,
  [in] POOL_TYPE     PoolType,
  [in] SIZE_T        NumberOfBytes,
  [in] ULONG         Tag
);

Parameter

[in] Instance

Penunjuk instans buram untuk instans driver minifilter milik penelepon yang dilampirkan ke volume. Parameter ini diperlukan dan tidak boleh NULL.

[in] PoolType

Jenis kumpulan yang akan dialokasikan. Salah satu dari berikut ini:

NonPagedPool

PagedPool

NonPagedPoolCacheAligned

PagedPoolCacheAligned

Lihat POOL_TYPE untuk deskripsi jenis memori kumpulan yang tersedia.

[in] NumberOfBytes

Jumlah byte yang akan dialokasikan. Parameter ini diperlukan dan bisa nol.

[in] Tag

Menentukan tag kumpulan untuk memori yang dialokasikan. Driver biasanya menentukan tag kumpulan sebagai string satu hingga empat karakter ASCII 7-bit, dibatasi oleh tanda kutip tunggal (misalnya, 'abcd'). Parameter ini diperlukan dan tidak boleh nol.

Mengembalikan nilai

Jika tidak tersedia cukup kumpulan gratis untuk memenuhi permintaan, FltAllocatePoolAlignedWithTag mengembalikan penunjuk NULL . Jika tidak, FltAllocatePoolAlignedWithTag mengembalikan pointer ke buffer yang baru dialokasikan.

Keterangan

FltAllocatePoolAlignedWithTag mengalokasikan buffer yang selaras sesuai dengan perangkat yang mendasar untuk volume yang diberikan. Buffer yang selaras dengan perangkat tersebut diperlukan untuk I/O yang tidak di-cache. (Mereka juga dapat digunakan untuk I/O yang di-cache.) Jadi ketika memanggil rutinitas yang melakukan I/O non-cache, seperti FltReadFile dan FltWriteFile, driver minifilter harus memanggil FltAllocatePoolAlignedWithTag alih-alihExAllocatePoolWithTag.

Jika pemanggil menentukan nilai nol untuk parameter NumberOfBytes , FltAllocatePoolAlignedWithTag mengalokasikan jumlah memori terkecil yang memenuhi persyaratan perataan.

Sistem mengaitkan tag kumpulan yang ditentukan oleh parameter Tag dengan buffer yang dialokasikan. Alat pemrograman, seperti Windows Debugger (WinDbg), dapat menampilkan tag kumpulan yang terkait dengan setiap buffer yang dialokasikan. Nilai tag kumpulan biasanya ditampilkan dalam urutan terbalik. Misalnya, jika penelepon meneruskan 'Fred' sebagai nilai parameter Tag , nilai ini akan muncul sebagai 'derF' jika kumpulan dicadangkan atau saat melacak penggunaan kumpulan di debugger.

Untuk informasi selengkapnya tentang manajemen memori, lihat Manajemen Memori.

Ketika buffer yang dialokasikan FltAllocatePoolAlignedWithTag tidak lagi diperlukan, pemanggil bertanggung jawab untuk membebaskannya dengan memanggil FltFreePoolAlignedWithTag.

Pemanggil FltAllocatePoolAlignedWithTag dapat berjalan di IRQL DISPATCH_LEVEL hanya jika NonPagedXxxPoolType ditentukan. Jika tidak, penelepon harus berjalan di IRQL <= APC_LEVEL.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
IRQL <= APC_LEVEL (lihat bagian Keterangan)

Lihat juga

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile