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

# Télécharger un objet blob depuis le stockage de titre

> Exemple de code C plat pour télécharger un objet blob depuis Title Storage des services XBOX à l'aide de XblTitleStorageDownloadBlobAsync, avec des conseils sur le dimensionnement de la mémoire tampon et la taille des blocs.

Cette rubrique montre comment télécharger un objet blob depuis Title Storage des services XBOX à l'aide de l'exemple de code C plat suivant.

## Remarques sur les paramètres de XblTitleStorageDownloadBlobAsync

* La mémoire tampon que vous fournissez pour stocker les données de l'objet blob téléchargé doit être suffisamment grande pour contenir l'objet blob en cours de téléchargement. Si nécessaire, vous pouvez obtenir la longueur requise pour la mémoire tampon en récupérant les métadonnées de l'objet blob.

* Cette API renvoie E\_NOT\_SUFFICIENT\_BUFFER (0x8007007A) si `blobBuffer` n'a pas une capacité suffisante pour contenir les données de l'objet blob.

* Pour utiliser la taille par défaut, passez 0 pour `preferredDownloadBlockSize`.

#### C plat

```cpp theme={null}
std::unique_ptr<std::vector<uint8_t>> downloadBlobBuffer = std::make_unique<std::vector<uint8_t>>(blobMetadata.length);

auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = downloadBlobBuffer.get();
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock };   // Take over ownership of XAsyncBlock*.
    std::unique_ptr<std::vector<uint8_t>> downloadBlobBuffer{ static_cast<std::vector<uint8_t>*>(asyncBlock->context) };
    HRESULT hr = XblTitleStorageDownloadBlobResult(asyncBlock, &blobMetadata);
};

HRESULT hr = XblTitleStorageDownloadBlobAsync(
    xboxLiveContext,
    blobMetadata,
    downloadBlobBuffer->data(),
    blobMetadata.length,
    XblTitleStorageETagMatchCondition::NotUsed,
    selectQuery.c_str(),   // Optional  .
    preferredDownloadBlockSize,   // Optional.
    asyncBlock.get()
);

if (SUCCEEDED(hr))
{
    // The call succeeded, so release std::unique_ptr ownership of XAsyncBlock* because
    // the callback takes over ownership. If the call fails, however, std::unique_ptr keeps
    // ownership and deletes XAsyncBlock*.
    asyncBlock.release();
    downloadBlobBuffer.release();
}
```

## Voir aussi

[XAsyncBlock](/fr/reference/system/xasync/structs/xasyncblock)

[XblTitleStorageDownloadBlobAsync](/fr/reference/live/xsapi-c/title_storage_c/functions/xbltitlestoragedownloadblobasync)

[XblTitleStorageDownloadBlobResult](/fr/reference/live/xsapi-c/title_storage_c/functions/xbltitlestoragedownloadblobresult)

[XblTitleStorageETagMatchCondition](/fr/reference/live/xsapi-c/title_storage_c/enums/xbltitlestorageetagmatchcondition)


## Related topics

- [Procédures](/fr/services/xbox-services/storage/title-storage/how-to/index.md)
- [Charger un objet blob vers le stockage de titre](/fr/services/xbox-services/storage/title-storage/how-to/live-uploading-title-storage-blob.md)
- [Obtenir les métadonnées d'un objet blob du stockage de titre](/fr/services/xbox-services/storage/title-storage/how-to/live-getting-title-storage-blob-metadata.md)
- [Supprimer un objet blob du stockage de titre](/fr/services/xbox-services/storage/title-storage/how-to/live-deleting-title-storage-blob.md)
- [Configurer le stockage de titre dans Partner Center](/fr/services/xbox-services/storage/title-storage/config/live-title-storage-portal-config.md)
