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

# Cómo usar un producto duradero sin paquete

> Use un producto duradero sin paquete (DWOB) en su título: configuración de licencias, comprobaciones de derechos y en qué se diferencian los DWOB de los productos de contenido descargable con paquete.

Los productos duraderos se pueden configurar con o sin un paquete que se descarga en el cliente. Un producto duradero sin paquete es más fácil de configurar y usar. Estos tipos de duraderos se usan normalmente para controlar el acceso a contenido que ya forma parte del juego base. Muchos juegos optan por incluir el contenido de los complementos en el paquete del juego base porque usan los recursos con fines multijugador o de vista previa incluso sin licencia.

<Note>
  Un producto duradero sin paquete no se admite en discos.
</Note>

Incluso sin un paquete descargable, el tipo de producto sigue proporcionando una licencia según el [Modelo de uso compartido de productos para juegos](/publishing/xstore-commerce/xstore-product-sharing).

No basta con comprobar la propiedad mediante [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members). En su lugar, compruebe correctamente el acceso a un producto duradero mediante [XStoreAcquireLicenseForDurablesAsync](/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;
    }
}
```

## Documentación de referencia de la API

* [XStore (contenido de la API)](/reference/system/xstore/xstore_members)
  * Funciones
    * [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members)

## Consulte también

[Información general sobre comercio](/publishing/xstore-commerce/xstore-commerce-overview)

[Administración y licencias de contenido descargable (DLC)](/publishing/xstore-commerce/xstore-dlc)

[Referencia de la API XStore](/reference/system/xstore/xstore_members)


## Related topics

- [Administración y licencias de contenido descargable (DLC)](/es/publishing/xstore-commerce/xstore-dlc.md)
- [Información general sobre los sistemas de comercio del GDK](/es/publishing/xstore-commerce/xstore-overview.md)
- [Concesión de acceso a los jugadores al contenido de complemento](/es/publishing/xstore-commerce/xstore-granting-access.md)
- [Habilitación de las pruebas de licencias](/es/publishing/xstore-commerce/xstore-licensing-setup.md)
- [Elección del tipo de producto adecuado](/es/publishing/xstore-commerce/xstore-choosing-product-type.md)
