> ## 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.

# CreateRenderAudioStateMonitorForCategory

> CreateRenderAudioStateMonitorForCategory

# CreateRenderAudioStateMonitorForCategory

\[Certaines informations concernent un produit en version préliminaire susceptible d'être considérablement modifié avant sa commercialisation. Microsoft n'offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.]

Crée une instance de [IAudioStateMonitor](/fr/reference/audio/audiostatemonitor/interfaces/iaudiostatemonitor) qui surveille le niveau audio de tous les flux de rendu audio de la catégorie spécifiée.

## Syntaxe

```cpp theme={null}
HRESULT WINAPI CreateRenderAudioStateMonitorForCategory(
  AUDIO_STREAM_CATEGORY category,
  _Out_ IAudioStateMonitor **audioStateMonitor
);
```

### Paramètres

*category*\
Type : AUDIO\_STREAM\_CATEGORY

Membre de l'énumération <a href="https://learn.microsoft.com/en-us/windows/desktop/api/audiosessiontypes/ne-audiosessiontypes-audio_stream_category" target="_blank">AUDIO\_STREAM\_CATEGORY</a> qui spécifie la catégorie des flux de rendu audio à surveiller.

*audioStateMonitor* \_Out\_\
Type : IAudioStateMonitor\*\*

Ce paramètre de sortie reçoit l'objet `IAudioStateMonitor` créé.

### Valeur renvoyée

Type : HRESULT

*category*
Membre de l'énumération <a href="https://learn.microsoft.com/en-us/windows/desktop/api/audiosessiontypes/ne-audiosessiontypes-audio_stream_category">AUDIO\_STREAM\_CATEGORY</a> qui spécifie la catégorie des flux de rendu audio à surveiller.

*audioStateMonitor* \[out]
Ce paramètre de sortie reçoit l'objet `IAudioStateMonitor` créé.

### Valeur renvoyée

Si la méthode réussit, elle retourne `S\_OK`.

## Remarques

Il s'agit de l'une des fonctions qui créent et retournent une instance AudioStateMonitor.

Il existe quatre variantes, pour les flux de capture comme pour les flux de rendu, qui déterminent
si un processus peut effectuer l'une des opérations suivantes pour un rôle donné :

* Capturer ou rendre n'importe quel audio de n'importe quelle catégorie
* Capturer ou rendre l'audio d'une catégorie spécifique
* Capturer ou rendre l'audio d'une catégorie spécifique, vers un point de terminaison spécifique.\
  Le point de terminaison peut être spécifié à l'aide de l'ID `MMDevice` (obtenu avec `IMMDevice::GetId()`) ou à l'aide de son ID `SWD` (obtenu avec `Windows.Devices.Enumeration` ou `Windows.Media.Devices.MediaDevice`)
* Capturer ou rendre l'audio d'une catégorie spécifique vers le point de terminaison par défaut

Prenons le scénario suivant, dans lequel un jeu choisit de lire l'audio GameMedia uniquement lorsqu'il est certain que l'audio ne sera pas coupé par le système d'exploitation en raison d'une stratégie. Pour ce faire, le jeu s'inscrit aux notifications SoundLevel pour la catégorie de flux [AudioCategory\_GameMedia](https://learn.microsoft.com/windows/desktop/api/audiosessiontypes/ne-audiosessiontypes-audio_stream_category) sur le point de terminaison de console par défaut. Si le SoundLevel de cette catégorie est défini sur 'Muted', le jeu arrête la lecture de son flux GameMedia. Si le SoundLevel a une autre valeur, le jeu choisit de lire son flux GameMedia.

```cpp theme={null}
// global variables 
winrt::com_ptr<IAudioStateMonitor> g_audioStateMonitor; 
AudioStateMonitorRegistrationHandle g_registration = 0; 

// Returns true if the GameMedia stream should be disabled, false if it should be 
// enabled. 
bool IsSoundLevelMuted(_In_ IAudioStateMonitor* audioStateMonitor) 
{ 
return (audioStateMonitor->GetSoundLevel() == AudioStateMonitorSoundLevel::Muted); 
} 

HRESULT StartTrackingSoundLevel() 
{ 
// Create an AudioStateMonitor and register for callbacks from it. 
HRESULT hr = RegisterForSoundLevelChanges(); 
if (SUCCEEDED(hr)) 
{ 
// Check the current sound level and determine if the GameMedia stream should 
// be enabled. 
bool disableGameMediaStream = IsSoundLevelMuted(g_audioStateMonitor.get()); 

// Add code here that enables or disables the GameMedia stream based on the 
// value of the boolean. 
} 
return hr; 
} 

HRESULT RegisterForSoundLevelChanges() 
{ 
HRESULT hr = S_OK; 

// Create a new AudioStateMonitor for the GameMedia category, if needed, and 
// register for callbacks. 
if (m_audioStateMonitor == nullptr) 
{ 
hr = CreateRenderAudioStateMonitorForCategoryAndDeviceRole( 
AudioCategory_GameMedia, ERole::eConsole, g_audioStateMonitor.put()); 
if (SUCCEEDED(hr)) 
{ 
// Optional "context" parameter is not used in this example, 
// and is set to nullptr. 
hr = g_audioStateMonitor->RegisterCallback(OnAudioStateMonitorCallback, nullptr, &g_registration); 
} 
} 

if (FAILED(hr)) 
{ 
// g_audioStateMonitor is a smart pointer, so if an IAudioStateMonitor was 
// allocated, setting the smart pointer to null invokes the Release method 
// which will decrement its usage count and ensure that the object is properly 
// destroyed. 
g_audioStateMonitor = nullptr; 
} 
return hr; 
} 

// Unregister callbacks on program shutdown 
void UnregisterForSoundLevelChanges() 
{ 
if (g_audioStateMonitor != nullptr) 
{ 
if (g_registration) 
{ 
g_audioStateMonitor->UnregisterCallback(g_registration); 
} 

// g_audioStateMonitor is a smart pointer, so setting it to null 
// invokes the Release method to decrement its usage count. 
g_audioStateMonitor = nullptr; 
} 
} 

void OnAudioStateMonitorCallback(_In_ IAudioStateMonitor* audioStateMonitor, _In_opt_ void* context) 
{ bool disableGameMediaStream = IsSoundLevelMuted(audioStateMonitor); 

// Add code here that enables or disables the GameMedia stream based on the value 
// of the boolean. 
} 
```

## Configuration requise

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

**Bibliothèque :** Windows.Media.MediaControl.lib

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

## Voir aussi

[AUDIO\_STREAM\_CATEGORY](https://learn.microsoft.com/windows/win32/api/audiosessiontypes/ne-audiosessiontypes-audio_stream_category)

[À propos de WASAPI](https://learn.microsoft.com/windows/desktop/CoreAudio/wasapi)

[WASAPI](/fr/build/console-features/audio/overviews/wasapi-overview)


## Related topics

- [CreateRenderAudioStateMonitorForCategory](/reference/audio/audiostatemonitor/functions/createrenderaudiostatemonitorforcategory.md)
- [IAudioStateMonitor interface](/reference/audio/audiostatemonitor/interfaces/iaudiostatemonitor.md)
- [AudioStateMonitor](/reference/audio/audiostatemonitor/audiostatemonitor_members.md)
- [Interfaz IAudioStateMonitor](/es/reference/audio/audiostatemonitor/interfaces/iaudiostatemonitor.md)
- [IAudioStateMonitor 接口](/zh-CN/reference/audio/audiostatemonitor/interfaces/iaudiostatemonitor.md)
