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

Retorna o progresso atual da instalação.

## Sintaxe

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

### Parâmetros

*installationMonitor*   \_In\_\
Tipo: XPackageInstallationMonitorHandle

Um identificador para o monitor de instalação.

*progress*   \_Out\_\
Tipo: [XPackageInstallationProgress\*](/pt-BR/reference/system/xpackage/structs/xpackageinstallationprogress)

No retorno, contém o progresso atual da instalação.

### Valor retornado

Tipo: void

## Comentários

Para obter o progresso atual de uma instalação, chame [XPackageGetInstallationProgress](/pt-BR/reference/system/xpackage/functions/xpackagegetinstallationprogress); para ser notificado sobre uma alteração durante uma instalação, registre um retorno de chamada. Você pode criar o monitor de instalação para o pacote inteiro ou para um subconjunto específico.

Por um momento, durante uma nova instalação de novo conteúdo, o runtime não consegue calcular o tamanho total do pacote, porque a instalação ainda não foi totalmente iniciada. Nesse caso, o runtime retornará UINT64\_MAX como o valor de totalBytes e zero ou false para todos os outros campos.

Exemplo:

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

Vamos analisar cada chamada de API no código mostrado acima:

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

Todo conteúdo instalado terá um identificador exclusivo. Você pode monitorar a instalação de qualquer pacote se souber o identificador do pacote e tiver acesso a esse conteúdo. Um processo em execução pode obter seu próprio identificador de pacote. Para obter mais informações sobre identificadores de pacote, consulte [Gerenciar e licenciar conteúdo para download (DLC)](/pt-BR/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); 
```

Isso cria um monitor que acompanha o estado da instalação. Esse monitor de instalação se atualiza em uma cadência regular. Para obter o progresso atual de uma instalação, chame [XPackageGetInstallationProgress](/pt-BR/reference/system/xpackage/functions/xpackagegetinstallationprogress); para ser notificado sobre uma alteração durante uma instalação, registre um retorno de chamada.

Você pode criar o monitor de instalação para o pacote inteiro ou para um subconjunto específico. Aqui, você definiu um "seletor" que indica que você deseja saber sobre o progresso da instalação de um nome de pista. Você pode especificar uma frequência (neste caso, 1000 ms) que indica com que frequência o monitor de instalação atualizará seu instantâneo do progresso, até essa velocidade. Se nenhum progresso tiver sido feito no tempo, ela poderá ser mais lenta.

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

Você deseja saber quando a pista terminou de carregar, portanto, registra um evento de alteração de progresso no monitor. Esse retorno de chamada será invocado por meio da fila de tarefas fornecida quando o monitor foi criado, aproximadamente na cadência especificada em [XPackageCreateInstallationMonitor](/pt-BR/reference/system/xpackage/functions/xpackagecreateinstallationmonitor). Dentro do retorno de chamada, você pode renderizar o progresso no jogo ou notificar o jogo de que uma pista está pronta.

Neste exemplo, você fecha o monitor de instalação, mas não cancela o registro da notificação. O tempo de vida de uma notificação do monitor de instalação está vinculado ao monitor de instalação; portanto, fechar o monitor cancela o registro de todas as notificações para ele.

## Requisitos

**Cabeçalho:** XPackage.h

**Biblioteca:** xgameruntime.lib

**Plataformas compatíveis:** Windows, consoles da família XBOX One e consoles XBOX Series

## Documentação conceitual

* [Intelligent Delivery: especificadores de idioma](/pt-BR/build/core-features/common/packaging/intelligentdelivery-language)

## Confira também

[XPackage](/pt-BR/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)
