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