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

# Comment utiliser un produit durable sans package

> Utilisez un produit durable sans package (DWOB) dans votre titre : configuration des licences, vérification des droits d'utilisation et différences entre les DWOB et les produits de contenu téléchargeable avec package.

Les produits durables peuvent être configurés avec ou sans package téléchargé sur le client. Un produit durable sans package est plus facile à configurer et à utiliser. Ces types de produits durables servent généralement à contrôler l'accès à du contenu qui fait déjà partie du jeu de base. De nombreux jeux choisissent d'inclure le contenu des modules complémentaires dans le package du jeu de base, car ils utilisent ces ressources pour le multijoueur ou à des fins d'aperçu, même sans licence.

<Note>
  Un produit durable sans package n'est pas pris en charge sur les disques.
</Note>

Même sans package téléchargeable, le type de produit fournit tout de même une licence conformément au [modèle de partage de produits pour les jeux](/fr-CA/publishing/xstore-commerce/xstore-product-sharing).

Il ne suffit pas de vérifier la propriété à l'aide de [XStoreQueryEntitledProductsAsync](/fr-CA/reference/system/xstore/xstore_members). Vérifiez plutôt correctement l'accès à un produit durable à l'aide de [XStoreAcquireLicenseForDurablesAsync](/fr-CA/reference/system/xstore/xstore_members) :

```cpp theme={null}
void AcquireLicenseForDurable(const char* storeId)
{
    auto async = new XAsyncBlock{};
    async->queue = m_asyncQueue;
    async->callback = [](XAsyncBlock* async)
    {
        XStoreLicenseHandle result = {};

        HRESULT hr = XStoreAcquireLicenseForDurablesResult(
            async,
            &result);

        if (SUCCEEDED(hr))
        {
            bool isValid = XStoreIsLicenseValid(result);
            printf("Is valid license: %s\n", isValid? "yes" : "no");
        }
        else
        {
            printf("Error calling XStoreAcquireLicenseForDurablesResult: 0x%x\n", hr);
        }

        delete async;
    };

    HRESULT hr = XStoreAcquireLicenseForDurablesAsync(
        m_xStoreContext,
        storeId,
        async);

    if (FAILED(hr))
    {
        delete async;
        return;
    }
}
```

## Documentation de référence de l'API

* [XStore (contenu de l'API)](/fr-CA/reference/system/xstore/xstore_members)
  * Fonctions
    * [XStoreQueryEntitledProductsAsync](/fr-CA/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForDurablesAsync](/fr-CA/reference/system/xstore/xstore_members)

## Voir aussi

[Vue d'ensemble du commerce](/fr-CA/publishing/xstore-commerce/xstore-commerce-overview)

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

[Référence de l'API XStore](/fr-CA/reference/system/xstore/xstore_members)


## Related topics

- [Opérations de base du magasin](/fr-CA/publishing/xstore-commerce/xstore-basic-operations.md)
- [Choix du type de produit approprié](/fr-CA/publishing/xstore-commerce/xstore-choosing-product-type.md)
- [Gérer le contenu téléchargeable (DLC) et ses licences](/fr-CA/publishing/xstore-commerce/xstore-dlc.md)
- [Activation des tests de licence](/fr-CA/publishing/xstore-commerce/xstore-licensing-setup.md)
- [Accorder aux joueurs l'accès au contenu des modules complémentaires](/fr-CA/publishing/xstore-commerce/xstore-granting-access.md)
