次の方法で共有


XUserGetLocalId

ユーザーの一意のゲームセッション ID を取得します。

構文

HRESULT XUserGetLocalId(  
         XUserHandle user,  
         XUserLocalId* userLocalId  
)  

パラメーター

user _In_
型: XUserHandle

ローカル ID を取得するユーザーへのハンドル。

userLocalId _Out_
型: XUserLocalId*

ユーザーの一意のゲームセッション ID が格納されます。

戻り値

型: HRESULT

HRESULT 成功またはエラー コード。
エラー コードの一覧については、「エラー コード」を参照してください。

解説

特定のユーザーのユーザー ID を取得するには、XUserGetId を呼び出します。

特定のユーザーの状態を取得するには、XUserGetState を呼び出します。

特定のユーザーの年齢グループを取得するには、XUserGetAgeGroup を呼び出します。

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

次の例は、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

ライブラリ: xgameruntime.lib

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

関連項目

XUser

XUserGetId

XUserGetState

XUserGetAgeGroup