> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XUserGetDefaultAudioEndpointUtf16

> XUserGetDefaultAudioEndpointUtf16

# XUserGetDefaultAudioEndpointUtf16

Recupera o ponto de extremidade de áudio padrão de um usuário específico.

## Sintaxe

```cpp theme={null}
HRESULT XUserGetDefaultAudioEndpointUtf16(  
         XUserLocalId user,  
         XUserDefaultAudioEndpointKind defaultAudioEndpointKind,  
         size_t endpointIdUtf16Count,  
         wchar_t* endpointIdUtf16,  
         size_t* endpointIdUtf16Used  
)  
```

### Parâmetros

*user*   \
Tipo: [XUserLocalId](https://docs.xbox.com/pt-BR/reference/system/xuser/structs/xuserlocalid.md)\
A ID local do usuário para o qual obter o ponto de extremidade de áudio padrão.

*defaultAudioEndpointKind*   \
Tipo: [XUserDefaultAudioEndpointKind](https://docs.xbox.com/pt-BR/reference/system/xuser/enums/xuserdefaultaudioendpointkind.md)\
Um valor de enumeração que especifica se o ponto de extremidade de áudio padrão do usuário renderiza ou captura áudio.

*endpointIdUtf16Count*   \
Tipo: size\_t\
A contagem de wchar\_t do buffer para o qual o parâmetro *endpointIdUtf16* aponta. Passe **XUserAudioEndpointMaxUtf16Count**.

*endpointIdUtf16*   \_Out\_writes\_to\_(endpointIdUtf16Count,*endpointIdUtf16Used)\
Tipo: wchar\_t*\
Contém a ID do ponto de extremidade de áudio padrão do usuário.

*endpointIdUtf16Used*   \_Out\_opt\_\
Tipo: size\_t\*

Contém a contagem real de wchar\_t da ID que o parâmetro *endpointIdUtf16* retorna.

### Valor retornado

Tipo: HRESULT

Retornará S\_OK se for bem-sucedido; caso contrário, retornará um código de erro.
Para obter uma lista de códigos de erro, consulte [Códigos de erro](https://docs.xbox.com/pt-BR/reference/errorcodes.md).

## Comentários

> [!NOTE]
>
> Não é seguro chamar esta função em um thread sensível ao tempo. Para obter mais informações, consulte [Threads sensíveis ao tempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).

A função XUserGetDefaultAudioEndpointUtf16 recebe uma enumeração [XUserDefaultAudioEndpointKind](https://docs.xbox.com/pt-BR/reference/system/xuser/enums/xuserdefaultaudioendpointkind.md) como argumento.

A função de retorno de chamada [XUserDefaultAudioEndpointUtf16ChangedCallback](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuserdefaultaudioendpointutf16changedcallback.md) é invocada quando o ponto de extremidade de áudio padrão de um usuário específico é alterado.

Para se registrar para receber um retorno de chamada quando o ponto de extremidade de áudio padrão for alterado, chame [XUserRegisterForDefaultAudioEndpointUtf16Changed](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuserregisterfordefaultaudioendpointutf16changed.md).

Para cancelar o registro para receber um retorno de chamada quando o ponto de extremidade de áudio padrão for alterado, chame [XUserUnregisterForDefaultAudioEndpointUtf16Changed](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuserunregisterfordefaultaudioendpointutf16changed.md).

O exemplo a seguir demonstra como recuperar o ponto de extremidade de áudio padrão de um usuário.

```cpp theme={null}
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;
}
```

## Requisitos

**Cabeçalho:** XUser.h

**Biblioteca:** xgameruntime.lib

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Documentação conceitual

* [Threads sensíveis ao tempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## Confira também

[XUser](https://docs.xbox.com/pt-BR/reference/system/xuser/xuser_members.md)

[XUserDefaultAudioEndpointUtf16ChangedCallback](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuserdefaultaudioendpointutf16changedcallback.md)

[XUserRegisterForDefaultAudioEndpointUtf16Changed](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuserregisterfordefaultaudioendpointutf16changed.md)

[XUserUnregisterForDefaultAudioEndpointUtf16Changed](https://docs.xbox.com/pt-BR/reference/system/xuser/functions/xuserunregisterfordefaultaudioendpointutf16changed.md)


## Related topics

- [XUserDefaultAudioEndpointKind](https://docs.xbox.com/pt-BR/reference/system/xuser/enums/xuserdefaultaudioendpointkind.md)
- [XUserLocalId](https://docs.xbox.com/pt-BR/reference/system/xuser/structs/xuserlocalid.md)
- [Usuários e dispositivos de entrada](https://docs.xbox.com/pt-BR/build/core-features/common/user/users-input-devices.md)
- [XUser (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/system/xuser/xuser_members.md)
- [Usar wrappers C# para APIs do GDK no seu projeto do Unity](https://docs.xbox.com/pt-BR/build/gdk-and-engines/unity/unity-api-wrappers.md)
