Fungsi HeapQueryInformation (heapapi.h)
Mengambil informasi tentang tumpukan yang ditentukan.
Sintaks
BOOL HeapQueryInformation(
[in, optional] HANDLE HeapHandle,
[in] HEAP_INFORMATION_CLASS HeapInformationClass,
[out] PVOID HeapInformation,
[in] SIZE_T HeapInformationLength,
[out, optional] PSIZE_T ReturnLength
);
Parameter
[in, optional] HeapHandle
Handel ke tumpukan yang informasinya akan diambil. Handel ini dikembalikan oleh fungsi HeapCreate atau GetProcessHeap .
[in] HeapInformationClass
Kelas informasi yang akan diambil. Parameter ini bisa menjadi nilai berikut dari jenis enumerasi HEAP_INFORMATION_CLASS .
Nilai | Makna |
---|---|
|
Menunjukkan fitur heap yang diaktifkan.
Parameter HeapInformation adalah penunjuk ke variabel ULONG . Jika HeapInformation adalah 0, heap adalah heap standar yang tidak mendukung daftar look-aside. Jika HeapInformation adalah 1, heap mendukung daftar look-aside. Untuk informasi selengkapnya, lihat Keterangan. Jika HeapInformation adalah 2, heap fragmentasi rendah (LFH) telah diaktifkan untuk tumpukan. Mengaktifkan LFH menonaktifkan daftar look-aside. |
[out] HeapInformation
Penunjuk ke buffer yang menerima informasi heap. Format data ini tergantung pada nilai parameter HeapInformationClass .
[in] HeapInformationLength
Ukuran informasi timbunan yang dikueri, dalam byte.
[out, optional] ReturnLength
Penunjuk ke variabel yang menerima panjang data yang ditulis ke buffer HeapInformation . Jika buffer terlalu kecil, fungsi gagal dan ReturnLength menentukan ukuran minimum yang diperlukan untuk buffer.
Jika Anda tidak ingin menerima informasi ini, tentukan NULL.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Untuk mengaktifkan LFH atau fitur terminate-on-corruption, gunakan fungsi HeapSetInformation .
Windows XP dan Windows Server 2003: Daftar look-aside adalah mekanisme alokasi memori cepat yang hanya berisi blok berukuran tetap. Daftar look-aside diaktifkan secara default untuk timbunan yang mendukungnya. Dimulai dengan Windows Vista, daftar look-aside tidak digunakan dan LFH diaktifkan secara default.
Daftar look-aside lebih cepat daripada alokasi kumpulan umum yang bervariasi dalam ukuran, karena sistem tidak mencari memori gratis yang sesuai dengan alokasi. Selain itu, akses ke daftar look-aside umumnya disinkronkan menggunakan instruksi pertukaran prosesor atom yang cepat alih-alih muteks atau spinlock. Daftar look-aside dapat dibuat oleh sistem atau driver. Mereka dapat dialokasikan dari kumpulan halaman atau tidak bertumpuk.
Contoh
Contoh berikut menggunakan GetProcessHeap untuk mendapatkan handel ke tumpukan proses default dan HeapQueryInformation untuk mengambil informasi tentang tumpukan.
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#define HEAP_STANDARD 0
#define HEAP_LAL 1
#define HEAP_LFH 2
int __cdecl _tmain()
{
BOOL bResult;
HANDLE hHeap;
ULONG HeapInformation;
//
// Get a handle to the default process heap.
//
hHeap = GetProcessHeap();
if (hHeap == NULL) {
_tprintf(TEXT("Failed to retrieve default process heap with LastError %d.\n"),
GetLastError());
return 1;
}
//
// Query heap features that are enabled.
//
bResult = HeapQueryInformation(hHeap,
HeapCompatibilityInformation,
&HeapInformation,
sizeof(HeapInformation),
NULL);
if (bResult == FALSE) {
_tprintf(TEXT("Failed to retrieve heap features with LastError %d.\n"),
GetLastError());
return 1;
}
//
// Print results of the query.
//
_tprintf(TEXT("HeapCompatibilityInformation is %d.\n"), HeapInformation);
switch(HeapInformation)
{
case HEAP_STANDARD:
_tprintf(TEXT("The default process heap is a standard heap.\n"));
break;
case HEAP_LAL:
_tprintf(TEXT("The default process heap supports look-aside lists.\n"));
break;
case HEAP_LFH:
_tprintf(TEXT("The default process heap has the low-fragmentation ") \
TEXT("heap enabled.\n"));
break;
default:
_tprintf(TEXT("Unrecognized HeapInformation reported for the default ") \
TEXT("process heap.\n"));
break;
}
return 0;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | heapapi.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk