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

# XUserGetDefaultAudioEndpointUtf16

> XUserGetDefaultAudioEndpointUtf16

# XUserGetDefaultAudioEndpointUtf16

Récupère le point de terminaison audio par défaut d'un utilisateur donné.

## Syntaxe

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

### Paramètres

*user*   \
Type : [XUserLocalId](/fr-CA/reference/system/xuser/structs/xuserlocalid)\
ID local de l'utilisateur dont il faut obtenir le point de terminaison audio par défaut.

*defaultAudioEndpointKind*   \
Type : [XUserDefaultAudioEndpointKind](/fr-CA/reference/system/xuser/enums/xuserdefaultaudioendpointkind)\
Valeur d'énumération qui spécifie si le point de terminaison audio par défaut de l'utilisateur effectue le rendu ou la capture audio.

*endpointIdUtf16Count*   \
Type : size\_t\
Nombre de wchar\_t de la mémoire tampon vers laquelle pointe le paramètre *endpointIdUtf16*. Passez **XUserAudioEndpointMaxUtf16Count**.

*endpointIdUtf16*   \_Out\_writes\_to\_(endpointIdUtf16Count,*endpointIdUtf16Used)\
Type : wchar\_t*\
Contient l'ID du point de terminaison audio par défaut de l'utilisateur.

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

Contient le nombre réel de wchar\_t de l'ID que retourne le paramètre *endpointIdUtf16*.

### Valeur de retour

Type : HRESULT

Retourne S\_OK en cas de réussite; sinon, retourne un code d'erreur.
Pour obtenir la liste des codes d'erreur, consultez [Codes d'erreur](/fr-CA/reference/errorcodes).

## Remarques

<Note>Il n'est pas sécuritaire d'appeler cette fonction sur un thread sensible au temps. Pour plus d'informations, consultez [Threads sensibles au temps](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

La fonction XUserGetDefaultAudioEndpointUtf16 prend comme argument une énumération [XUserDefaultAudioEndpointKind](/fr-CA/reference/system/xuser/enums/xuserdefaultaudioendpointkind).

La fonction de rappel [XUserDefaultAudioEndpointUtf16ChangedCallback](/fr-CA/reference/system/xuser/functions/xuserdefaultaudioendpointutf16changedcallback) est appelée lorsque le point de terminaison audio par défaut d'un utilisateur donné change.

Pour vous inscrire afin de recevoir un rappel lorsque le point de terminaison audio par défaut change, appelez [XUserRegisterForDefaultAudioEndpointUtf16Changed](/fr-CA/reference/system/xuser/functions/xuserregisterfordefaultaudioendpointutf16changed).

Pour annuler votre inscription à la réception d'un rappel lorsque le point de terminaison audio par défaut change, appelez [XUserUnregisterForDefaultAudioEndpointUtf16Changed](/fr-CA/reference/system/xuser/functions/xuserunregisterfordefaultaudioendpointutf16changed).

L'exemple suivant montre comment récupérer le point de terminaison audio par défaut d'un utilisateur.

```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;
}
```

## Configuration requise

**En-tête :** XUser.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Documentation conceptuelle

* [Threads sensibles au temps](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## Voir aussi

[XUser](/fr-CA/reference/system/xuser/xuser_members)

[XUserDefaultAudioEndpointUtf16ChangedCallback](/fr-CA/reference/system/xuser/functions/xuserdefaultaudioendpointutf16changedcallback)

[XUserRegisterForDefaultAudioEndpointUtf16Changed](/fr-CA/reference/system/xuser/functions/xuserregisterfordefaultaudioendpointutf16changed)

[XUserUnregisterForDefaultAudioEndpointUtf16Changed](/fr-CA/reference/system/xuser/functions/xuserunregisterfordefaultaudioendpointutf16changed)


## Related topics

- [XUserGetDefaultAudioEndpointUtf16](/reference/system/xuser/functions/xusergetdefaultaudioendpointutf16.md)
- [XUserDefaultAudioEndpointKind](/zh-CN/reference/system/xuser/enums/xuserdefaultaudioendpointkind.md)
