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

# XStoreDownloadAndInstallPackagesAsync

> XStoreDownloadAndInstallPackagesAsync

# XStoreDownloadAndInstallPackagesAsync

Télécharge et installe les packages du magasin spécifiés.

## Syntaxe

```cpp theme={null}
HRESULT XStoreDownloadAndInstallPackagesAsync(  
         const XStoreContextHandle storeContextHandle,  
         const char** storeIds,  
         size_t storeIdsCount,  
         XAsyncBlock* async  
)  
```

### Paramètres

*storeContextHandle*   \_In\_\
Type : XStoreContextHandle

Le handle de contexte de magasin de l'utilisateur retourné par [XStoreCreateContext](/fr-CA/reference/system/xstore/functions/xstorecreatecontext).

*storeIds*   \_In\_z\_count\_(storeIdsCount)\
Type : char\*\*

Liste de chaînes d'identificateurs de packages.
Un identificateur de package identifie de façon unique un package du Microsoft Store. Pour plus d'informations sur les identificateurs de packages, consultez [Gérer et octroyer des licences pour le contenu téléchargeable (DLC)](/fr-CA/publishing/xstore-commerce/xstore-dlc).

*storeIdsCount*   \_In\_\
Type : size\_t

Le nombre d'ID dans **storeIds**.

*async*   \_Inout\_\
Type : [XAsyncBlock\*](/fr-CA/reference/system/xasync/structs/xasyncblock)

Un [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock) qui définit le travail asynchrone en cours. Le [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock) peut servir à interroger l'état de l'appel et à récupérer les résultats de l'appel. Pour plus d'informations, consultez [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock).

### Valeur de retour

Type : [HRESULT](https://learn.microsoft.com/openspecs/windows_protocols/ms-erref/0642cb2f-2075-4469-918c-4441e69c548a)

Code de réussite ou d'erreur HRESULT.

## Remarques

Pour récupérer le résultat du téléchargement et de l'installation de cette fonction, appelez [XStoreDownloadAndInstallPackagesResult](/fr-CA/reference/system/xstore/functions/xstoredownloadandinstallpackagesresult) après avoir appelé cette fonction. Pour récupérer le nombre d'éléments téléchargés et installés, appelez [XStoreDownloadAndInstallPackagesResultCount](/fr-CA/reference/system/xstore/functions/xstoredownloadandinstallpackagesresultcount) après avoir appelé cette fonction. La fonction de nombre de résultats est importante, car elle vous permet de déterminer la taille appropriée du tableau à passer à la fonction de résultat.

Lorsque cette API est appelée à partir d'un jeu en cours d'exécution, les téléchargements sont considérés comme hautement prioritaires et sont placés au début de la file d'attente, dans l'ordre où ils sont spécifiés dans le paramètre storeIds de cette API.

L'extrait de code suivant montre un exemple de téléchargement et d'installation de packages du magasin.

```cpp theme={null}
  
void CALLBACK DownloadAndInstallPackagesCallback(XAsyncBlock* asyncBlock)
{
    uint32_t count;

    HRESULT hr = XStoreDownloadAndInstallPackagesResultCount(
        asyncBlock,
        &count);

    if (FAILED(hr))
    {
        printf("Failed retrieve the installing packages count: 0x%x\r\n", hr);
        return;
    }

    printf("Number of updates: %d", count);

    auto packageIdentifiers = new char[count][XPACKAGE_IDENTIFIER_MAX_LENGTH];
    hr = XStoreDownloadAndInstallPackagesResult(
        asyncBlock,
        count,
        &packageIdentifiers[0]);

    if (FAILED(hr))
    {
        delete[] packageIdentifiers;
        printf("Failed retrieve the installing packages results: 0x%x\r\n", hr);
        return;
    }

    for (uint32_t index = 0; index < count; index++)
    {
        printf("packageIdentifier: %s\r\n", packageIdentifiers[index]);
    }

    delete[] packageIdentifiers;
}

void DownloadAndInstallPackages(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char** storeIds, size_t storeIdsCount)
{
    auto asyncBlock = std::make_unique<XAsyncBlock>();
    ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
    asyncBlock->queue = taskQueueHandle;
    asyncBlock->callback = DownloadAndInstallPackagesCallback;

    HRESULT hr = XStoreDownloadAndInstallPackagesAsync(
        storeContextHandle,
        storeIds,
        storeIdsCount,
        asyncBlock.get());

    if (FAILED(hr))
    {
        printf("Failed to start download and install: 0x%x\r\n", hr);
        return;
    }
}
```

## Configuration requise

**En-tête :** XStore.h (inclus dans XGameRuntime.h)

**Bibliothèque :** xgameruntime.lib

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

## Documentation conceptuelle

* [Gérer et octroyer des licences pour le contenu téléchargeable (DLC)](/fr-CA/publishing/xstore-commerce/xstore-dlc)

## Voir aussi

[XStore](/fr-CA/reference/system/xstore/xstore_members)\
[XStoreDownloadAndInstallPackagesResult](/fr-CA/reference/system/xstore/functions/xstoredownloadandinstallpackagesresult)\
[XStoreDownloadAndInstallPackagesResultCount](/fr-CA/reference/system/xstore/functions/xstoredownloadandinstallpackagesresultcount)


## Related topics

- [XStoreDownloadAndInstallPackagesAsync](/reference/system/xstore/functions/xstoredownloadandinstallpackagesasync.md)
- [XStoreDownloadAndInstallPackagesResult](/reference/system/xstore/functions/xstoredownloadandinstallpackagesresult.md)
- [XStoreDownloadAndInstallPackagesResultCount](/reference/system/xstore/functions/xstoredownloadandinstallpackagesresultcount.md)
- [XStoreQueryPackageIdentifier](/reference/system/xstore/functions/xstorequerypackageidentifier.md)
