次の方法で共有


XUserLocalId

ユーザーのゲームセッション ID を指定します。

構文

typedef struct XUserLocalId {  
    uint64_t value;  
} XUserLocalId  

メンバー

value
型: uint64_t

ユーザーのゲームセッション ID。

解説

XUserLocalId は、ゲーム セッション内でユーザーを一意に識別します。 XUserHandle を複製する場合、両方のハンドルが同じ XUserLocalId を保持します。 いったんゲーム セッションが終了すると、次のセッションでは同じユーザーが別の XUserLocalId を持つことができます。 これらの ID を使用して、ゲーム セッションをまたがってユーザーを追跡することはできません。 ID はゲーム セッションごとに有効です。

"null" の XUserLocalId は、XUserNullUserLocalId の値と等しくなります。

次のコールバック関数と関数は、XUserLocalId 構造体またはそれに対するポインターを引数としてのいずれかを取得します。

次の例は、XUserLocalId 構造体を使ってユーザーの既定のオーディオ エンドポイントを取得する方法を示しています。

HRESULT GetAudioDeviceAssociation(
    IMMDeviceEnumerator* audioDeviceEnumerator,
    XUserLocalId user,
    XUserDefaultAudioEndpointKind defaultAudioEndpointKind,
    _Outptr_result_maybenull_ IMMDevice** endpoint)
{
    wchar_t audioDeviceId[XUserAudioEndpointMaxUtf16Count];
    RETURN_IF_FAILED_WITH_EXPECTED(XUserGetDefaultAudioEndpointUtf16(user, defaultAudioEndpointKind, std::size(audioDeviceId), audioDeviceId, nullptr), E_NOTFOUND);

    return audioDeviceEnumerator->GetDevice(audioDeviceId, endpoint);
}

HRESULT GetAudioAssociations()
{
    Mwrl::ComPtr<IMMDeviceEnumerator> audioDeviceEnumerator;

    RETURN_IF_FAILED(CoCreateInstance(
        __uuidof(MMDeviceEnumerator),
        nullptr,
        CLSCTX_ALL,
        __uuidof(IMMDeviceEnumerator),
        (void**)&audioDeviceEnumerator));

    XUserLocalId userLocalId;
    RETURN_IF_FAILED(XUserGetLocalId(_handle.get(), &userLocalId));

    {
        wil::unique_cotaskmem_string id;
        Mwrl::ComPtr<IMMDevice> device;
        if (SUCCEEDED(GetAudioDeviceAssociation(audioDeviceEnumerator.Get(), userLocalId, XUserDefaultAudioEndpointKind::CommunicationRender, &device)))
        {
            RETURN_IF_FAILED(device->GetId(&id));
        }
        appLog.AddLog("Preferred render communication device id: %S\n", id.get());
    }

    {
        wil::unique_cotaskmem_string id;
        Mwrl::ComPtr<IMMDevice> device;
        if (SUCCEEDED(GetAudioDeviceAssociation(audioDeviceEnumerator.Get(), userLocalId, XUserDefaultAudioEndpointKind::CommunicationCapture, &device)))
        {
            RETURN_IF_FAILED(device->GetId(&id));
        }
        appLog.AddLog("Preferred capture communication device id: %S\n", id.get());
    }

    return S_OK;
}

要件

ヘッダー: XUser.h

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XUser

XUserChangeEventCallback

XUserDefaultAudioEndpointUtf16ChangedCallback

XUserFindUserByLocalId

XUserGetDefaultAudioEndpointUtf16

XUserGetLocalId