Audio measures

Whenever an application or Windows component wants to play or record audio, it uses one of various audio APIs.

Audio stream initialization

All of the audio APIs eventually invoke the core audio API call IAudioClient::Initialize. The IAudioClient::Initialize function creates the connection between the application and the Windows audio engine, and a connection between the Windows audio engine and the audio driver.

If the IAudioClient::Initialize call fails, then the application is, with some exceptions, unable to use audio. Some IAudioClient::Initialize errors are benign and are ignored; a list of these errors is provided in the appendix.

The result of the call is logged in an AudioClientInitialize event in the Microsoft.Windows.Audio.Client provider. The HRESULT field is 0 if the call succeeded, and a negative number if the call failed.

The following audio measures track IAudioClient::Initialize success:

Audio user-mode reliability

Kernel streaming audio drivers run in kernel mode. If an audio driver hits an exception, it results in a blue screen of death (BSOD) or green screen of death (GSOD).

There are no measures specifically for audio kernel-mode reliability issues, but there are measures for kernel-mode reliability issues in general.

The Windows shared-mode audio engine runs in user mode. In particular, the Windows audio service, AudioSrv.dll (AudioSrv), runs in a dedicated svchost.exe process. It also launches a helper Windows Audio Device Graph Isolation process, audiodg.exe (AudioDg).

Audio IHVs can include plugins to the user-mode audio engine called audio processing objects (APOs).

If an APO hits an exception, there's no blue screen of death, but the Windows audio engine crashes. There's also a watchdog timer that verifies that calls from applications are completing quickly. If a call gets stuck, the watchdog notices and forces a crash of the Windows audio engine.

Either way, all audio on the system is lost until the audio engine can be restarted.

If AudioDg crashes, and AudioSrv is around to notice, an AudioDgCrash event is logged from the Microsoft.Windows.Audio.Service provider. In some older versions of Windows 10, the event was AudioDg-Crash.

If AudioSrv crashes, and AudioDg is around to notice, an AudioSrvSvchostCrash event is logged from the Microsoft.Windows.Audio.DeviceGraph provider. In some older versions of Windows 10, the event was AudioSrv-Svchost-Crash.

If the audio service hangs, a Hang event is logged from the Microsoft.Windows.Audio.Service provider. In some older versions of Windows 10, for certain kinds of hangs, a Hang event would also be logged from the Microsoft.Windows.Audio.DeviceGraph provider.

The following audio measures track the reliability of the Windows audio engine:

Audio Processing Object disablement

This measure tracks automatic disablement of audio processing objects:

What to do if your shipping label is rejected

If your shipping label is rejected, see Appeal a rejected audio driver