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
HeapCompatibilityInformation
0
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

GetProcessHeap

Fungsi Heap

HeapCreate

HeapSetInformation

Fungsi Manajemen Memori