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:
- Percent of machines with at least one audio stream initialization failure
- Percent of Machines with Subpar Stream Initialization Success Rate
- Percent of machine endpoints with at least one audio stream initialization failure per Driver
- Percent of machine endpoints with Subpar Stream Initialization Success Rate
- Percent of machine endpoints with at least one audio render stream initialization failure per driver
- Percent of machines with at least one audio render stream initialization failure
- Percent of machine endpoints with at least one audio capture stream initialization failure per driver
- Percent of machines with at least one audio capture stream initialization failure
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:
- Percent of machines with at least one audio crash
- Percent of machines with at least one audio hang
- Percent of machine endpoints with at least one audio crash
- Percent of machine endpoints with at least one audio hang
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