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

Crée un moniteur de l'état de l'installation.

## Syntaxe

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

### Paramètres

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

Chaîne qui identifie de manière unique le package installé sur le disque. Pour plus d'informations sur les identificateurs de package, consultez [Gérer et accorder des licences pour le contenu téléchargeable (DLC)](/fr/publishing/xstore-commerce/xstore-dlc).

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

Nombre de sélecteurs dans le paramètre *selectors*.

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

Tableau de sélecteurs qui spécifient les blocs à surveiller.

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

Résolution du moniteur, en millisecondes.

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

File d'attente dans laquelle les mises à jour sont effectuées.

*installationMonitor*   \_Out\_\
Type : XPackageInstallationMonitorHandle\*

Au retour, pointe vers le moniteur d'installation créé.

### Valeur renvoyée

Type : HRESULT

Code de réussite ou d'erreur HRESULT.

## Remarques

<Note>Cette fonction ne peut pas être appelée en toute sécurité sur un thread à contrainte de temps. Pour plus d'informations, consultez [Threads à contrainte de temps](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

**XPackageCreateInstallationMonitor** crée un moniteur qui suit l'état de l'installation. Le moniteur se met à jour et s'actualise à une cadence régulière déterminée par l'intervalle de mise à jour spécifié. Les mises à jour sont planifiées sur la file d'attente de tâches spécifiée. Un intervalle de zéro indique que les mises à jour ne doivent jamais être effectuées et crée un moniteur d'installation qui constitue un instantané unique de l'installation. Si un intervalle de zéro est transmis, le paramètre queue peut être null.

Pour obtenir la progression actuelle d'une installation, appelez [XPackageGetInstallationProgress](/fr/reference/system/xpackage/functions/xpackagegetinstallationprogress) ; pour être averti d'un changement pendant une installation, inscrivez un rappel. Ce moniteur d'installation peut être créé pour l'ensemble du package ou pour un sous-ensemble particulier.

Un jeu a implémenté un marqueur de lancement, de sorte qu'il peut être exécuté avant d'être complètement installé. Le jeu doit savoir quelles parties sont installées et lesquelles ne le sont pas. Dans cet exemple, le jeu doit savoir quand les blocs associés à un circuit portant le nom de piste spécifié sont installés :

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

Examinons chaque appel d'API du code ci-dessus :

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

Tout contenu installé possède un identificateur unique. Vous pouvez surveiller l'installation de n'importe quel package si vous connaissez l'identificateur du package et avez accès à ce contenu. Un processus en cours d'exécution peut obtenir son propre identificateur de package.

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

Cet appel crée un moniteur qui suit l'état de l'installation. Ce moniteur d'installation se met à jour à intervalles réguliers. Pour obtenir la progression actuelle d'une installation, appelez [XPackageGetInstallationProgress](/fr/reference/system/xpackage/functions/xpackagegetinstallationprogress) ; pour être averti d'un changement pendant une installation, inscrivez un rappel.

Vous pouvez créer le moniteur d'installation pour l'ensemble du package ou pour un sous-ensemble particulier. Ici, vous avez défini un « sélecteur » indiquant que vous souhaitez connaître la progression de l'installation pour un nom de piste. Vous pouvez spécifier une fréquence (dans ce cas, 1 000 ms) qui indique à quelle fréquence le moniteur d'installation met à jour son instantané de la progression, jusqu'à cette vitesse. Si aucune progression n'a été réalisée dans ce délai, la mise à jour peut être plus lente.

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

Vous souhaitez savoir quand le chargement de la piste est terminé ; vous inscrivez donc un événement de changement de progression sur le moniteur. Ce rappel sera appelé via la file d'attente de tâches fournie lors de la création du moniteur, approximativement à la cadence spécifiée dans [XPackageCreateInstallationMonitor](/fr/reference/system/xpackage/functions/xpackagecreateinstallationmonitor). Dans le rappel, vous pouvez afficher la progression dans le jeu ou avertir le jeu qu'une piste est prête.

Dans cet exemple, vous fermez le moniteur d'installation sans désinscrire la notification. La durée de vie d'une notification de moniteur d'installation est liée au moniteur d'installation ; par conséquent, la fermeture du moniteur désinscrit toutes les notifications qui lui sont associées.

## Configuration requise

**En-tête :** XPackage.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Documentation conceptuelle

* [Installation en streaming : état](/fr/build/core-features/common/packaging/packaging-installstatus)
* [Threads à contrainte de temps](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)
* [Recherche de mises à jour](/fr/publishing/xstore-commerce/xstore-checking-updates)

## Voir aussi

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


## Related topics

- [XPackageInstallationProgressCallback](/fr/reference/system/xpackage/functions/xpackageinstallationprogresscallback.md)
- [XPackageRegisterInstallationProgressChanged](/fr/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged.md)
- [Installation en streaming : état](/fr/build/core-features/common/packaging/packaging-installstatus.md)
- [XPackageCloseInstallationMonitorHandle](/fr/reference/system/xpackage/functions/xpackagecloseinstallationmonitorhandle.md)
- [Recherche de mises à jour](/fr/publishing/xstore-commerce/xstore-checking-updates.md)
