Função HeapQueryInformation (heapapi.h)
Recupera informações sobre o heap especificado.
Sintaxe
BOOL HeapQueryInformation(
[in, optional] HANDLE HeapHandle,
[in] HEAP_INFORMATION_CLASS HeapInformationClass,
[out] PVOID HeapInformation,
[in] SIZE_T HeapInformationLength,
[out, optional] PSIZE_T ReturnLength
);
Parâmetros
[in, optional] HeapHandle
Um identificador para o heap cujas informações devem ser recuperadas. Esse identificador é retornado pela função HeapCreate ou GetProcessHeap .
[in] HeapInformationClass
A classe de informações a ser recuperada. Esse parâmetro pode ser o valor a seguir do tipo de enumeração HEAP_INFORMATION_CLASS .
Valor | Significado |
---|---|
|
Indica os recursos de heap habilitados.
O parâmetro HeapInformation é um ponteiro para uma variável ULONG . Se HeapInformation for 0, o heap será um heap padrão que não dá suporte a listas de look-aside. Se HeapInformation for 1, o heap oferecerá suporte a listas de look-aside. Para obter mais informações, consulte Comentários. Se HeapInformation for 2, o heap de baixa fragmentação (LFH) foi habilitado para o heap. Habilitar o LFH desabilita listas de look-aside. |
[out] HeapInformation
Um ponteiro para um buffer que recebe as informações de heap. O formato desses dados depende do valor do parâmetro HeapInformationClass .
[in] HeapInformationLength
O tamanho das informações de heap que estão sendo consultadas, em bytes.
[out, optional] ReturnLength
Um ponteiro para uma variável que recebe o comprimento dos dados gravados no buffer HeapInformation . Se o buffer for muito pequeno, a função falhará e ReturnLength especificará o tamanho mínimo necessário para o buffer.
Se você não quiser receber essas informações, especifique NULL.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Para habilitar o LFH ou o recurso terminate-on-corruption, use a função HeapSetInformation .
Windows XP e Windows Server 2003: Uma lista de look-aside é um mecanismo de alocação de memória rápida que contém apenas blocos de tamanho fixo. As listas de look-aside são habilitadas por padrão para heaps que dão suporte a elas. A partir do Windows Vista, as listas de look-aside não são usadas e o LFH está habilitado por padrão.
As listas de look-aside são mais rápidas do que as alocações gerais do pool que variam de tamanho, pois o sistema não pesquisa memória gratuita que se ajusta à alocação. Além disso, o acesso a listas de look-aside geralmente é sincronizado usando instruções rápidas de troca de processador atômica em vez de mutexes ou spinlocks. Listas de look-aside podem ser criadas pelo sistema ou drivers. Eles podem ser alocados do pool paginado ou nãopagado.
Exemplos
O exemplo a seguir usa GetProcessHeap para obter um identificador para o heap de processo padrão e HeapQueryInformation para recuperar informações sobre o heap.
#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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | heapapi.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |