다음을 통해 공유


XAppCaptureOpenScreenshotStream

스크린샷 스트림을 엽니다.

구문

HRESULT XAppCaptureOpenScreenshotStream(  
         const char* localId,  
         XAppCaptureScreenshotFormatFlag screenshotFormat,  
         XAppCaptureScreenshotStreamHandle* handle,  
         uint64_t* totalBytes  
)  

매개 변수

localId _In_
형식: char*

XAppCaptureTakeScreenshot을 호출한 후 XAppCaptureTakeScreenshotResult에 반환된 스크린샷의 로컬 ID입니다.

screenshotFormat _In_
형식: XAppCaptureScreenshotFormatFlag

XAppCaptureTakeScreenshot을 호출한 후 XAppCaptureTakeScreenshotResult에 반환된 스크린샷 형식 플래그입니다.

handle _Out_
형식: XAppCaptureScreenshotStreamHandle*

스트림을 연 결과로 반환된 스크린샷 스트림 핸들입니다.

totalBytes _Out_opt_
형식: uint64_t*

스트림의 총 바이트 수입니다.

반환 값

형식: HRESULT

함수 결과입니다.

설명

참고 항목

이 함수는 시간에 민감한 스레드에서 호출하는 것이 안전하지 않습니다. 자세한 내용은 시간에 민감한 스레드를 참조하세요.

스크린샷은 게임 파티션에서 액세스할 수 없으므로, 사용자가 작성했거나 XAppCaptureTakeScreenshot으로 생성된 스크린샷을 검색하기 위해 스트림을 열어야 합니다. XAppCaptureTakeScreenshot은 해당 결과에 localID를 반환합니다. 이 결과는 적절한 스크린샷을 검색하기 위해 이 함수에서 사용됩니다. localID는 스크린샷이 디스크에 보존되는 한 유효합니다. 스크린샷이 저장되는 콘솔은 공간이 제한되어 있습니다. 할당된 공간이 채워지면 오래된 스크린샷이 삭제됩니다. 그 결과 스크린샷 열기 함수에서 localID가 누락될 수 있습니다. 스트림을 연 후에는 XAppCaptureReadScreenShotStream으로 스크린샷을 읽을 수 있습니다. 마지막으로 메모리 누수를 방지하기 위해 모든 스트림을 XAppCaptureCloseScreenshotStream으로 닫아야 합니다.

XAppCaptureTakeScreenshotResult takeScreenshotResult = {0};
XAppCaptureScreenshotStreamHandle handle = nullptr;
UINT64 totalBytesToRead = 0;
XAppCaptureScreenshotFormatFlag screenshotFormat = XAppCaptureScreenshotFormatFlag::SDR;
bool hdrAvailable = false;

/* ... obtain takeScreenshotResult with XAppCaptureTakeScreenshot. Refer to corresponding documentation ... */

hdrAvailable = static_cast<bool>(takeScreenshotResult.availableScreenshotFormats & XAppCaptureScreenshotFormatFlag::HDR);

/* Note: It is optional to obtain the HDR screenshot, if HDR is available. You will need to call XAppCaptureOpenScreenshotStream twice to obtain both SDR and HDR screenshots */
if (hdrAvailable)
{
    screenshotFormat = XAppCaptureScreenshotFormatFlag::HDR;
}

if (FAILED_LOG(XAppCaptureOpenScreenshotStream(takeScreenshotResult.localId, screenshotFormat, &handle, &totalBytesToRead)))
{
    return;
}

appLog.AddLog("%I64d bytes returned\n", totalBytesToRead);

/* You must always call XAppCaptureCloseScreenshotStream on an open XAppCaptureScreenshotStreamHandle to avoid a memory leak */
if (handle != nullptr)
{
    XAppCaptureCloseScreenshotStream(handle);
}

요구 사항

헤더: XAppCapture.h

라이브러리: xgameruntime.lib

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

참고 항목

GameDVR 개요
XAppCapture 멤버
XAppCaptureReadScreenShotStream
XAppCaptureTakeScreenshot
XAppCaptureCloseScreenshotStream