次の方法で共有


XAppCaptureStartUserRecord

ユーザーがトリガーしたかのようにレコーディングします。 記録の進行中にプレイヤーがゲームを中断/抑制した場合、その記録は停止されます。 記録はユーザー パーティションに保存されます。 キャプチャ設定は GameDVR の設定に基づきます。 同時レコーディング数の上限に達したら、 他のレコーディングを開始する前に、XAppCaptureStopUserRecord または XAppCaptureCancelUserRecord を呼び出す必要があります。 この 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 または XAppCaptureCancelUserRecord を使用して特定のレコーディングを停止するには、その ID を格納しておく必要があります。

注意

割り当てられたスペースがいっぱいになると、新しいクリップのためのスペースを確保するために以前のクリップが削除されます。 PLS (永続ローカル ストレージ)、接続ストレージ ( XGameSave または XGameSaveFiles など)、または同様のストレージ システムを使用して、クリップを一定の期間保持できます。

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

関連項目

XAppCapture のメンバー