XAppCaptureStartUserRecord
사용자가 트리거한 것처럼 기록합니다. 녹화가 진행되는 동안 플레이어가 게임을 일시 중단/제한하면 녹화가 중지됩니다. 녹음/녹화는 사용자 파티션에 저장됩니다. 캡처 설정은 GameDVR 설정을 기반으로 합니다. 동시 기록 제한에 도달하면 다른 기록을 시작하기 전에 XAppCaptureStopUserRecord를 호출해야 합니다. 이 API에 대한 Windows 지원은 향후 릴리스에서 추가될 예정입니다.
구문
HRESULT XAppCaptureStartUserRecord(
XUserHandle requestingUser,
uint32_t localIdBufferLength,
char* localIdBuffer
)
매개 변수
requestingUser _In_
형식: XUserHandle
녹음/녹화를 요청하는 사용자를 나타내는 핸들입니다.
localIdBufferLength _In_
형식: uint32_t
로컬 기록 ID를 수신하는 버퍼의 길이입니다.
localIdBuffer _Out_
형식: char*
진행 중인 기록 작업을 지정하는 로컬 ID를 포함하는 버퍼입니다.
반환 값
형식: HRESULT
함수 결과입니다. 반환이 아닌S_OK
값은 XAppCapture 오류 코드를 참조하세요.
설명
함수가 성공적으로 완료되면 localIdOfUserRecording은 기록의 로컬 ID를 포함하며 XAppCaptureStopUserRecord가 특정 기록을 중지하려면 저장해야 합니다.
char localIdOfUserRecording[APPCAPTURE_MAX_LOCALID_LENGTH] = { '\0' };
XAppCaptureVideoCaptureSettings captureSettings = { 0 };
if (FAILED_LOG(XAppCaptureGetVideoCaptureSettings(&captureSettings)))
{
return;
}
if (captureSettings.isCaptureByGamesAllowed)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = g_taskQueue;
asyncBlock->callback = [](XAsyncBlock* ab)
{
auto asyncBlock = std::unique_ptr<XAsyncBlock>(ab);
XUserHandle user = nullptr;
auto scopeExit = wil::scope_exit([&]()
{
if (user != nullptr)
{
XUserCloseHandle(user);
}
});
if (FAILED_LOG(XUserAddResult(asyncBlock.get(), &user)))
{
return;
}
if (FAILED_LOG(XAppCaptureStartUserRecord(user, ARRAYSIZE(localIdOfUserRecording), localIdOfUserRecording)))
{
return;
}
appLog.AddLog("Recording started: localId = %s\n", localIdOfUserRecording);
};
if (SUCCEEDED_LOG(XUserAddAsync(
XUserAddOptions::AddDefaultUserAllowingUI,
asyncBlock.get())))
{
// Once started, release the pointer
asyncBlock.release();
}
}
요구 사항
헤더: XAppCapture.h
라이브러리: xgameruntime.lib
지원되는 플랫폼: Xbox One 패밀리 콘솔 및 Xbox Series 콘솔