次の方法で共有


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 本体

関連項目

ゲーム録画の概要
XAppCapture のメンバー
XAppCaptureReadScreenShotStream
XAppCaptureTakeScreenshot
XAppCaptureCloseScreenshotStream