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

# XPackageCreateInstallationMonitor

> XPackageCreateInstallationMonitor

# XPackageCreateInstallationMonitor

Crea un monitor del estado de la instalación.

## Sintaxis

```cpp theme={null}
HRESULT XPackageCreateInstallationMonitor(  
         const char* packageIdentifier,  
         uint32_t selectorCount,  
         XPackageChunkSelector* selectors,  
         uint32_t minimumUpdateIntervalMs,  
         XTaskQueueHandle queue,  
         XPackageInstallationMonitorHandle* installationMonitor  
)  
```

### Parámetros

*packageIdentifier*   \_In\_z\_\
Tipo: char\*

Una cadena que identifica de forma única el paquete instalado en el disco. Para obtener más información sobre los identificadores de paquete, consulte [Administración y concesión de licencias de contenido descargable (DLC)](/publishing/xstore-commerce/xstore-dlc).

*selectorCount*   \_In\_\
Tipo: uint32\_t

El número de selectores del parámetro *selectors*.

*selectors*   \_In\_reads\_opt\_(selectorCount)\
Tipo: [XPackageChunkSelector\*](/reference/system/xpackage/structs/xpackagechunkselector)

Una matriz de selectores que especifica los fragmentos que se van a supervisar.

*minimumUpdateIntervalMs*   \_In\_\
Tipo: uint32\_t

La resolución del monitor, en milisegundos.

*queue*   \_In\_opt\_\
Tipo: XTaskQueueHandle

La cola donde se realizan las actualizaciones.

*installationMonitor*   \_Out\_\
Tipo: XPackageInstallationMonitorHandle\*

Al devolverse, apunta al monitor de instalación creado.

### Valor devuelto

Tipo: HRESULT

HRESULT de éxito o código de error.

## Comentarios

<Note>No es seguro llamar a esta función en un subproceso sensible al tiempo. Para obtener más información, consulte [Subprocesos sensibles al tiempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

**XPackageCreateInstallationMonitor** crea un monitor que hace un seguimiento del estado de la instalación. El monitor se actualiza a sí mismo con una cadencia regular regida por el intervalo de actualización especificado. Las actualizaciones se programan en la cola de tareas especificada. Un intervalo de cero especifica que nunca se realizarán actualizaciones y crea un monitor de instalación que es una instantánea única de la instalación. Si se pasa un intervalo cero, el parámetro de cola puede ser nulo.

Para obtener el progreso actual de una instalación, llame a [XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress); para recibir notificaciones de un cambio durante una instalación, registre una devolución de llamada. Este monitor de instalación se puede crear para todo el paquete o para un subconjunto concreto.

Un juego ha implementado un marcador de inicio, de modo que puede ejecutarse antes de que esté completamente instalado. El juego necesitará saber qué partes están instaladas y cuáles no. En este ejemplo, el juego necesita saber cuándo se instalan los fragmentos asociados a un circuito de carreras con el nombre de pista especificado:

```cpp theme={null}
void CALLBACK ProgressChangedCallback(
    void* /* context*/,
    XPackageInstallationMonitorHandle monitor)
{
    XPackageInstallationProgress progress;
    XPackageGetInstallationProgress(monitor, &progress);

    if (progress.completed)
    {
        printf("Track ready\n");
        XPackageCloseInstallationMonitorHandle(monitor);
    }
}

HRESULT StartMonitoring(XTaskQueueHandle queue, char* trackName)
{
    char id[XPACKAGE_IDENTIFIER_MAX_LENGTH];

    HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id);
    if (FAILED(hr)) return hr;

    XPackageChunkSelector selector;
    selector.type = XPackageChunkSelectorType::Tag;
    selector.tag = trackName;

    XPackageInstallationMonitorHandle monitor;
    hr = XPackageCreateInstallationMonitor(
        id,         // Identity to be monitored
        1,          // Number of selectors
        &selector,  // Selectors
        1000,       // Resolution of the monitor, in milliseconds
        queue,      // Queue where updates are performed
        &monitor);
    if (FAILED(hr)) return hr;

    XTaskQueueRegistrationToken token;
    hr = XPackageRegisterInstallationProgressChanged(
        monitor,
        nullptr,
        ProgressChangedCallback,
        &token);

    if (FAILED(hr))
    {
        XPackageCloseInstallationMonitorHandle(monitor);
    }

    return hr;
}
```

Repasemos cada llamada a la API en el código mostrado anteriormente:

```cpp theme={null}
XPackageGetCurrentProcessPackageIdentifier(_countof(id), id); 
```

Todo el contenido instalado tendrá un identificador único. Puede supervisar la instalación de cualquier paquete si conoce el identificador del paquete y tiene acceso a ese contenido. Un proceso en ejecución puede obtener su propio identificador de paquete.

```cpp theme={null}
XPackageCreateInstallationMonitor( 
    id,         // Identity to be monitored 
    1,          // Number of selectors 
    &selector,  // Selectors 
    1000,       // Resolution of the monitor, in milliseconds 
    queue,      // Queue where updates are performed 
    &monitor));  
```

Esto crea un monitor que hace un seguimiento del estado de la instalación. Este monitor de instalación se actualiza a sí mismo con una cadencia regular. Para obtener el progreso actual de una instalación, llame a [XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress); para recibir notificaciones de un cambio durante una instalación, registre una devolución de llamada.

Puede crear el monitor de instalación para todo el paquete o para un subconjunto concreto. Aquí, ha definido un "selector" que indica que quiere conocer el progreso de instalación de un nombre de pista. Puede especificar una frecuencia (en este caso, 1000 ms) que indica con qué frecuencia el monitor de instalación actualizará su instantánea del progreso, hasta esta velocidad. Si no se ha producido ningún progreso a tiempo, podría ser más lenta.

```cpp theme={null}
hr = XPackageRegisterInstallationProgressChanged(
    monitor,
    nullptr,
    ProgressChangedCallback,
    &token);
```

Quiere saber cuándo ha terminado de cargarse la pista, por lo que registra un evento de cambio de progreso en el monitor. Esta devolución de llamada se invocará a través de la cola de tareas que se proporcionó al crear el monitor, aproximadamente con la cadencia especificada en [XPackageCreateInstallationMonitor](/reference/system/xpackage/functions/xpackagecreateinstallationmonitor). Dentro de la devolución de llamada, puede representar el progreso dentro del juego o notificar al juego que una pista está lista.

En este ejemplo, cierra el monitor de instalación pero no anula el registro de la notificación. La duración de una notificación de monitor de instalación está vinculada al monitor de instalación; por lo tanto, cerrar el monitor anula el registro de todas sus notificaciones.

## Requisitos

**Encabezado:** XPackage.h

**Biblioteca:** xgameruntime.lib

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

## Documentación conceptual

* [Instalación de streaming: estado](/build/core-features/common/packaging/packaging-installstatus)
* [Subprocesos sensibles al tiempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)
* [Comprobación de actualizaciones](/publishing/xstore-commerce/xstore-checking-updates)

## Consulte también

[XPackage](/reference/system/xpackage/xpackage_members)


## Related topics

- [XPackageInstallationProgressCallback](/es/reference/system/xpackage/functions/xpackageinstallationprogresscallback.md)
- [XPackageRegisterInstallationProgressChanged](/es/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged.md)
- [Instalación por streaming: estado](/es/build/core-features/common/packaging/packaging-installstatus.md)
- [XPackageCloseInstallationMonitorHandle](/es/reference/system/xpackage/functions/xpackagecloseinstallationmonitorhandle.md)
- [Comprobación de actualizaciones](/es/publishing/xstore-commerce/xstore-checking-updates.md)
