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