다음을 통해 공유


XPackageInstallChunksAsync

청크 설치를 시작합니다.

구문

HRESULT XPackageInstallChunksAsync(  
         const char* packageIdentifier,  
         uint32_t selectorCount,  
         XPackageChunkSelector* selectors,  
         uint32_t minimumUpdateIntervalMs,  
         bool suppressUserConfirmation,  
         XAsyncBlock* asyncBlock  
)  

매개 변수

packageIdentifier _In_z_
형식: char*

디스크에 설치된 패키지를 고유하게 식별하는 문자열입니다. 패키지 식별자에 대한 자세한 내용은 DLC(다운로드 가능한 콘텐츠 관리 및 라이선스)를참조하세요.

selectorCount _In_
형식: uint32_t

selectors 매개 변수의 선택기 수입니다.

selectors _In_reads_(selectorCount)
형식: XPackageChunkSelector*

설치할 청크를 지정하는 선택기 배열입니다.

minimumUpdateIntervalMs _In_
형식: uint32_t

업데이트 사이의 간격(밀리초)입니다.

suppressUserConfirmation _In_
형식: bool

설치할 청크가 미리 설정된 크기를 초과하면 확인 프롬프트가 표시됩니다. suppressUserConfirmation이 true이면 프롬프트가 표시되지 않으며 사용자가 승인 한 것처럼 설치가 진행됩니다. 이를 통해 게임은 자체 UI를 제공할 수 있습니다. 게임이 이를 사용하는 경우, XPackageEstimateDownloadSize를 호출하여 사용자에게 제공할 크기를 가져옵니다. XPackageEstimateDownloadSize는 또한 프롬프트가 표시될 만큼 크기가 충분한지를 나타내는 부울을 반환합니다. 다운로드 확인이 필요하다면 해당 UI를 사용하여 게임을 표시하거나 XPackageInstallChunks가 표시하도록 해야 합니다.

asyncBlock _Inout_
형식: XAsyncBlock*

비동기 호출의 상태를 모니터링하는 XAsyncBlock입니다.

반환 값

형식: HRESULT

HRESULT 성공 또는 오류 코드입니다.

비고

XPackageInstallChunks에는 비동기 변형이 있습니다. 청크 설치에는 사용자에게 다운로드 크기를 허용할지 묻는 메시지가 포함될 수 있습니다.

이 예제에서는 비동기 API를 사용하여 BigMaps가 설치되는 방법을 보여줍니다.

void CALLBACK BigMapsInstallProgress(
    void* /* context */,
    XPackageInstallationMonitorHandle monitor)
{
    XPackageInstallationProgress progress;
    XPackageGetInstallationProgress(monitor, &progress);
    if (progress.completed)
    {
        printf("BigMaps Installed\n");
        XPackageCloseInstallationMonitorHandle(monitor);
    }
}

void CALLBACK BigMapsAsyncInstallComplete(XAsyncBlock* asyncBlock)
{
    XPackageInstallationMonitorHandle monitor;
    HRESULT hr = XPackageInstallChunksResult(asyncBlock, &monitor);
    delete asyncBlock;

    if (SUCCEEDED(hr))
    {
        XTaskQueueRegistrationToken token;
        if (FAILED(XPackageRegisterInstallationProgressChanged(
            monitor,
            nullptr,
            BigMapsInstallProgress, &token)))
        {
            XPackageCloseInstallationMonitorHandle(monitor);
        }
    }
}

HRESULT InstallBigMapsAsync(XTaskQueueHandle queue)
{
    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 = "BigMaps";

    XAsyncBlock* asyncBlock = new (std::nothrow) XAsyncBlock{};
    asyncBlock->callback = BigMapsAsyncInstallComplete;
    asyncBlock->queue = queue;

    hr = XPackageInstallChunksAsync(
        id, 1, &selector, 1000,
        false, asyncBlock);

    if (FAILED(hr))
    {
        delete asyncBlock;
    }

    return hr;
}

요구 사항

헤더: XPackage.h

라이브러리: xgameruntime.lib

지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

XPackage
스트리밍 설치 및 지능형 전송
XPackageInstallChunks