다음을 통해 공유


XUserDefaultAudioEndpointKind

사용자의 기본 오디오 끝점이 오디오를 렌더링하는지 캡처하는지를 지정합니다.

구문

enum class XUserDefaultAudioEndpointKind  : uint32_t  
{  
    CommunicationRender = 0,  
    CommunicationCapture = 1  
}  

상수

상수 설명
CommunicationRender 사용자의 기본 오디오 끝점이 오디오를 렌더링합니다.
CommunicationCapture 사용자의 기본 오디오 끝점이 오디오를 캡처합니다.

비고

XUserGetDefaultAudioEndpointUtf16 함수는 XUserDefaultAudioEndpointKind 열거형 인수를 이용해 사용자의 기본 오디오 끝점을 얻습니다. XUserDefaultAudioEndpointUtf16ChangedCallback 함수는 XUserDefaultAudioEndpointKind 열거형 인수를 취하며 사용자의 기본 오디오 끝점이 변경되면 호출됩니다.

다음 예제에서는 사용자의 기본 오디오 끝점을 검색하는 방법을 보여줍니다.

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

XUserGetDefaultAudioEndpointUtf16

XUserDefaultAudioEndpointUtf16ChangedCallback