Documentation IndexFetch the complete documentation index at: /llms.txtUse this file to discover all available pages before exploring further.
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
XUserGetLocalId
HRESULT XUserGetLocalId( XUserHandle user, XUserLocalId* userLocalId )
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; }
相关主题
此页面对您有帮助吗?