Makro FsRtlAllocatePoolWithTag (ntifs.h)

Rutinitas FsRtlAllocatePoolWithTag mengalokasikan memori kumpulan.

Sintaks

void FsRtlAllocatePoolWithTag(
  [in]  PoolType,
  [in]  NumberOfBytes,
  [in]  Tag
);

Parameter

[in] PoolType

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

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

Jenis kumpulan NonPagedPoolMustSucceed dan NonPagedPoolCacheAlignedMustS sudah usang dan tidak boleh lagi digunakan.

[in] NumberOfBytes

Jumlah byte yang akan dialokasikan. Parameter ini diperlukan dan tidak boleh 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

Tidak ada

Keterangan

Jika kegagalan alokasi kumpulan terjadi, FsRtlAllocatePoolWithTag menimbulkan pengecualian STATUS_INSUFFICIENT_RESOURCES. Untuk mendapatkan kontrol jika kegagalan alokasi kumpulan ini terjadi, driver harus membungkus panggilan ke FsRtlAllocatePoolWithTag dalam pernyataan try-except atau try-finally .

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.

Memori yang dialokasikan FsRtlAllocatePoolWithTag tidak diinisialisasi. Driver mode-kernel harus terlebih dahulu nol memori ini jika akan membuatnya terlihat oleh perangkat lunak mode pengguna (untuk menghindari bocornya konten yang berpotensi istimewa).

Penelepon FsRtlAllocatePoolWithTag harus berjalan di IRQL <= DISPATCH_LEVEL. Penelepon di DISPATCH_LEVEL harus menentukan PoolTypeNonPaged Xxx. Jika tidak, pemanggil harus berjalan di IRQL <= APC_LEVEL.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (lihat bagian Keterangan)

Lihat juga

ExAllocatePoolWithTag

ExFreePool