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

# XPackageGetInstallationProgress

> XPackageGetInstallationProgress

# XPackageGetInstallationProgress

Retourne la progression actuelle de l'installation.

## Syntaxe

```cpp theme={null}
void XPackageGetInstallationProgress(  
         XPackageInstallationMonitorHandle installationMonitor,  
         XPackageInstallationProgress* progress  
)  
```

### Paramètres

*installationMonitor*   \_In\_\
Type : XPackageInstallationMonitorHandle

Handle du moniteur d'installation.

*progress*   \_Out\_\
Type : [XPackageInstallationProgress\*](/fr-CA/reference/system/xpackage/structs/xpackageinstallationprogress)

Au retour, contient la progression actuelle de l'installation.

### Valeur de retour

Type : void

## Remarques

Pour obtenir la progression actuelle d'une installation, appelez [XPackageGetInstallationProgress](/fr-CA/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.

Pendant un moment lors d'une nouvelle installation de nouveau contenu, le runtime ne peut pas calculer la taille totale du package, car l'installation n'a pas encore complètement commencé. Dans ce cas, le runtime retournera UINT64\_MAX comme valeur pour totalBytes, et zéro ou false pour tous les autres champs.

Exemple :

```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 dans le code présenté ci-dessus :

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

Tout le contenu installé aura 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. Pour plus d'informations sur les identificateurs de package, consultez [Gérer le contenu téléchargeable (DLC) et ses licences](/fr-CA/publishing/xstore-commerce/xstore-dlc).

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

Ce code 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-CA/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 » qui indique 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 mettra à 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 pourrait être plus lente.

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

Vous voulez savoir quand le chargement de la piste est terminé, alors vous inscrivez un événement de changement de progression sur le moniteur. Ce rappel sera appelé par l'intermédiaire de la file d'attente de tâches fournie lors de la création du moniteur, à peu près à la fréquence spécifiée dans [XPackageCreateInstallationMonitor](/fr-CA/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

* [Intelligent Delivery : spécificateurs de langue](/fr-CA/build/core-features/common/packaging/intelligentdelivery-language)

## Voir aussi

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


## Related topics

- [XPackageGetInstallationProgress](/reference/system/xpackage/functions/xpackagegetinstallationprogress.md)
- [XPackageInstallationProgressCallback](/reference/system/xpackage/functions/xpackageinstallationprogresscallback.md)
- [XPackageRegisterInstallationProgressChanged](/reference/system/xpackage/functions/xpackageregisterinstallationprogresschanged.md)
