> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XMemSetWin32HeapTrackingHooks

> XMemSetWin32HeapTrackingHooks

# XMemSetWin32HeapTrackingHooks

Define funções de retorno de chamada de rastreamento para alocação, realocação e desalocação de memória de heaps do Win32.

<a id="syntaxSection" />

## Sintaxe

```cpp theme={null}
VOID XMemSetWin32HeapTrackingHooks(  
         PHEAP_TRACK_ALLOC_ROUTINE AllocRoutine,  
         PHEAP_TRACK_REALLOC_ROUTINE ReAllocRoutine,  
         PHEAP_TRACK_FREE_ROUTINE FreeRoutine  
)  
```

<a id="parametersSection" />

### Parâmetros

*AllocRoutine*   \_In\_\
Tipo: [PHEAP\_TRACK\_ALLOC\_ROUTINE](/pt-BR/reference/system/xmem/functions/pheap_track_alloc_routine)

Um ponteiro para uma função de retorno de chamada de rastreamento para alocação de memória.

*ReAllocRoutine*   \_In\_\
Tipo: [PHEAP\_TRACK\_REALLOC\_ROUTINE](/pt-BR/reference/system/xmem/functions/pheap_track_realloc_routine)

Um ponteiro para uma função de retorno de chamada de rastreamento para realocação de memória.

*FreeRoutine*   \_In\_\
Tipo: [PHEAP\_TRACK\_FREE\_ROUTINE](/pt-BR/reference/system/xmem/functions/pheap_track_free_routine)

Um ponteiro para uma função de retorno de chamada de rastreamento para desalocação de memória.

<a id="retvalSection" />

### Valor retornado

Tipo: VOID

Nenhum.

<a id="remarksSection" />

## Comentários

Essa função permite rastrear a alocação, realocação e desalocação de memória de heap do Win32 especificando funções de retorno de chamada que são invocadas pelo gerenciador de memória do GDK quando essas operações de memória de heap são chamadas. Para obter mais informações sobre o rastreamento de operações de memória, consulte [Diagnóstico e rastreamento de memória](/pt-BR/build/console-features/memory/system-memory-diagnostics).

<Note>O CRT faz várias alocações de heap durante a inicialização e nos pontos de entrada de DLLs/EXEs vinculados ao CRT.  Como essa inicialização é um pré-requisito para a execução de qualquer código nesses módulos, normalmente não é possível chamar XMemSetWin32HeapTrackingHooks antes que *todas* as alocações de heap ocorram.  O código de retorno de chamada deve estar ciente desse comportamento e tratá-lo adequadamente.</Note>

Antes de chamar essa função, você deve primeiro implementar as seguintes funções de retorno de chamada de rastreamento correspondentes:

* Para rastrear a alocação quando `HeapAlloc` for invocado, implemente uma função [de retorno de chamada PHEAP\_TRACK\_ALLOC\_ROUTINE](/pt-BR/reference/system/xmem/functions/pheap_track_alloc_routine).
* Para rastrear a realocação quando `HeapReAlloc` for invocado, implemente uma função [de retorno de chamada PHEAP\_TRACK\_REALLOC\_ROUTINE](/pt-BR/reference/system/xmem/functions/pheap_track_realloc_routine).
* Para rastrear a desalocação quando `HeapFree` for invocado, implemente uma função [de retorno de chamada PHEAP\_TRACK\_FREE\_ROUTINE](/pt-BR/reference/system/xmem/functions/pheap_track_free_routine).

Você só precisa implementar as funções de retorno de chamada de rastreamento necessárias para seus requisitos de rastreamento. Para interromper o rastreamento de operações de memória de heap, chame essa função e especifique `NULL` para as operações de memória de heap apropriadas que você deseja parar de rastrear.

O exemplo a seguir define funções de retorno de chamada de rastreamento e, em seguida, usa a função `XMemSetWin32HeapTrackingHooks` para definir e limpar ganchos para essas funções de retorno de chamada de rastreamento.

```cpp theme={null}
void OnHeapAlloc(HANDLE hHeap, DWORD flags, SIZE_T size, PVOID addr)
{
    DebugPrint("[Heap 0x%p] Alloc %I64d bytes at addr: %p\n",
               hHeap, size, addr);
}

void OnHeapRealloc(HANDLE hHeap, DWORD flags, SIZE_T size, PVOID oldAddr, PVOID newAddr)
{
    DebugPrint("[Heap 0x%p] ReAlloc addr: 0x%p to %I64d bytes (new addr: 0x%p)\n",
               hHeap, oldAddr, size, newAddr);
}

void OnHeapFree(HANDLE hHeap, DWORD flags, PVOID addr)
{
    DebugPrint("[Heap 0x%p] Free addr: 0x%p\n",
               hHeap, addr);
}

// Set Hooks
XMemSetWin32HeapTrackingHooks(OnHeapAlloc, OnHeapReAlloc, OnHeapFree);

// Clear Hooks
XMemSetWin32HeapTrackingHooks(NULL, NULL, NULL);
```

<a id="requirementsSection" />

## Requisitos

**Cabeçalho:** xmem.h

**Biblioteca:** xmem.lib

**Plataformas compatíveis:** consoles da família XBOX One e consoles XBOX Series

<a id="seealsoSection" />

## Confira também

[Memória](/pt-BR/build/console-features/memory/system-memory-overview)\
[XMem](/pt-BR/reference/system/xmem/xmem_members)


## Related topics

- [XMemSetWin32HeapTrackingHooks](/reference/system/xmem/functions/xmemsetwin32heaptrackinghooks.md)
- [PHEAP_TRACK_ALLOC_ROUTINE callback](/reference/system/xmem/functions/pheap_track_alloc_routine.md)
- [PHEAP_TRACK_REALLOC_ROUTINE callback](/reference/system/xmem/functions/pheap_track_realloc_routine.md)
- [PHEAP_TRACK_FREE_ROUTINE callback](/reference/system/xmem/functions/pheap_track_free_routine.md)
