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

# XPackageCloseInstallationMonitorHandle

> XPackageCloseInstallationMonitorHandle

# XPackageCloseInstallationMonitorHandle

Fecha um monitor de instalação especificado que foi aberto anteriormente.

## Sintaxe

```cpp theme={null}
void XPackageCloseInstallationMonitorHandle(  
         XPackageInstallationMonitorHandle installationMonitor  
)  
```

### Parâmetros

*installationMonitor*   \_In\_\
Tipo: XPackageInstallationMonitorHandle

Um identificador para o monitor de instalação a ser fechado.

### Valor retornado

Tipo: void

## Comentários

Qualquer monitor de instalação usado para monitorar o status da instalação deve ser fechado em algum momento chamando **XPackageCloseInstallationMonitorHandle**.

Um jogo implementou um marcador de inicialização, portanto, ele pode ser executado antes de ser totalmente instalado. O jogo precisará saber quais partes estão instaladas e quais não estão. Neste exemplo, o jogo precisa saber quando as partes associadas a uma pista de corrida com o nome de pista especificado estão instaladas:

```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 qualquer instalação de 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}
HRESULT hr = XPackageRegisterInstallationProgressChanged( 
    monitor, 
    this, 
    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

## Confira também

[XPackage](/pt-BR/reference/system/xpackage/xpackage_members)


## Related topics

- [XPackageCloseInstallationMonitorHandle](/reference/system/xpackage/functions/xpackagecloseinstallationmonitorhandle.md)
- [XPackageInstallChunks](/reference/system/xpackage/functions/xpackageinstallchunks.md)
- [XPackage](/reference/system/xpackage/xpackage_members.md)
