XUserLocalId
ユーザーのゲームセッション ID を指定します。
構文
typedef struct XUserLocalId {
uint64_t value;
} XUserLocalId
メンバー
value
型: uint64_t
ユーザーのゲームセッション ID。
解説
XUserLocalId は、ゲーム セッション内でユーザーを一意に識別します。 XUserHandle を複製する場合、両方のハンドルが同じ XUserLocalId を保持します。 いったんゲーム セッションが終了すると、次のセッションでは同じユーザーが別の XUserLocalId を持つことができます。 これらの ID を使用して、ゲーム セッションをまたがってユーザーを追跡することはできません。 ID はゲーム セッションごとに有効です。
"null" の XUserLocalId は、XUserNullUserLocalId の値と等しくなります。
次のコールバック関数と関数は、XUserLocalId 構造体またはそれに対するポインターを引数としてのいずれかを取得します。
- XUserChangeEventCallback: ユーザー変更イベントのコールバック関数。
- XUserDefaultAudioEndpointUtf16ChangedCallback: 特定のユーザーの既定のオーディオ エンドポイントが変更されたときに呼び出されるコールバック。
- XUserFindUserByLocalId: 特定のローカル ID を使用してユーザーへのハンドルを取得する関数。
- XUserGetDefaultAudioEndpointUtf16: 特定のユーザーの既定のオーディオ エンドポイントを取得する関数。
- XUserGetLocalId: ユーザーの一意のゲーム セッション 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
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体
関連項目
XUserDefaultAudioEndpointUtf16ChangedCallback