Bagikan melalui


Makro FsRtlAllocatePoolWithTag (ntifs.h)

FsRtlAllocatePoolWithTag rutin mengalokasikan memori kumpulan.

Sintaksis

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

Parameter

[in] PoolType

Jenis kumpulan yang akan dialokasikan. Salah satu hal 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

Komentar

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 coba-kecuali atau coba-akhirnya pernyataan.

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 dibuang atau saat melacak penggunaan kumpulan di debugger.

Untuk informasi selengkapnya tentang manajemen memori, lihat Manajemen Memori.

Memori yang FsRtlAllocatePoolWithTag dialokasikan 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. Pemanggil di DISPATCH_LEVEL harus menentukan NonPagedXxxPoolType. Jika tidak, pemanggil harus berjalan di IRQL <= APC_LEVEL.

Persyaratan

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

Lihat juga

ExAllocatePoolWithTag

ExFreePool