> ## 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

Establece funciones de devolución de llamada de seguimiento para la asignación, reasignación y desasignación de memoria de los montones Win32.

<a id="syntaxSection" />

## Sintaxis

```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](/reference/system/xmem/functions/pheap_track_alloc_routine)

Puntero a una función de devolución de llamada de seguimiento para la asignación de memoria.

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

Puntero a una función de devolución de llamada de seguimiento para la reasignación de memoria.

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

Puntero a una función de devolución de llamada de seguimiento para la desasignación de memoria.

<a id="retvalSection" />

### Valor devuelto

Tipo: VOID

Ninguno.

<a id="remarksSection" />

## Comentarios

Esta función le permite realizar el seguimiento de la asignación, reasignación y desasignación de memoria de los montones Win32 mediante la especificación de funciones de devolución de llamada que el administrador de memoria del GDK invoca cuando se llama a esas operaciones de memoria del montón. Para obtener más información sobre el seguimiento de las operaciones de memoria, consulte [Diagnóstico y seguimiento de memoria](/build/console-features/memory/system-memory-diagnostics).

<Note>El CRT realiza varias asignaciones de montón durante la inicialización y los puntos de entrada de los DLL/EXE vinculados con el CRT.  Dado que esta inicialización es un requisito previo para la ejecución de cualquier código dentro de estos módulos, normalmente no es posible llamar a XMemSetWin32HeapTrackingHooks antes de que se produzcan *todas* las asignaciones de montón.  El código de devolución de llamada debe conocer este comportamiento y controlarlo en consecuencia.</Note>

Antes de llamar a esta función, primero debe implementar las siguientes funciones de devolución de llamada de seguimiento correspondientes:

* Para realizar el seguimiento de la asignación cuando se invoca `HeapAlloc`, implemente una función de [devolución de llamada PHEAP\_TRACK\_ALLOC\_ROUTINE](/reference/system/xmem/functions/pheap_track_alloc_routine).
* Para realizar el seguimiento de la reasignación cuando se invoca `HeapReAlloc`, implemente una función de [devolución de llamada PHEAP\_TRACK\_REALLOC\_ROUTINE](/reference/system/xmem/functions/pheap_track_realloc_routine).
* Para realizar el seguimiento de la desasignación cuando se invoca `HeapFree`, implemente una función de [devolución de llamada PHEAP\_TRACK\_FREE\_ROUTINE](/reference/system/xmem/functions/pheap_track_free_routine).

Solo necesita implementar las funciones de devolución de llamada de seguimiento necesarias para sus requisitos de seguimiento. Para dejar de realizar el seguimiento de las operaciones de memoria del montón, llame a esta función y especifique `NULL` para las operaciones de memoria del montón cuyo seguimiento desee detener.

El ejemplo siguiente define funciones de devolución de llamada de seguimiento y, a continuación, usa la función `XMemSetWin32HeapTrackingHooks` para establecer y borrar los enlaces a esas funciones de devolución de llamada de seguimiento.

```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

**Encabezado:** xmem.h

**Biblioteca:** xmem.lib

**Plataformas compatibles:** consolas de la familia XBOX One y consolas XBOX Series

<a id="seealsoSection" />

## Consulte también

[Memoria](/build/console-features/memory/system-memory-overview)\
[XMem](/reference/system/xmem/xmem_members)


## Related topics

- [PHEAP_TRACK_ALLOC_ROUTINE callback](/es/reference/system/xmem/functions/pheap_track_alloc_routine.md)
- [PHEAP_TRACK_FREE_ROUTINE callback](/es/reference/system/xmem/functions/pheap_track_free_routine.md)
- [PHEAP_TRACK_REALLOC_ROUTINE callback](/es/reference/system/xmem/functions/pheap_track_realloc_routine.md)
- [Información general de xCurl](/es/build/console-features/networking/web-requests/intro-xcurl.md)
- [XMemSetOption](/es/reference/system/xmem/functions/xmemsetoption.md)
