Mmdevapi Audioendpoints -

| State | Value | Description | |-------|-------|-------------| | DEVICE_STATE_ACTIVE | 0x0001 | Available and ready | | DEVICE_STATE_UNPLUGGED | 0x0002 | Physically disconnected | | DEVICE_STATE_NOTPRESENT | 0x0004 | Driver unloaded / disabled |

Software abstractions of the physical hardware the user interacts with. A single multi-channel audio card may expose several distinct endpoints, such as a set of analog speakers and a digital S/PDIF output. Working with Endpoint Interfaces

| File | Location | Purpose | |-------|-----------|---------| | mmdevapi.dll | C:\Windows\System32\ | Main API implementation | | AudioEndpointBuilder.dll | C:\Windows\System32\ | Service for endpoint creation | | audioses.dll | C:\Windows\System32\ | WASAPI session management | | AudioSrv.dll | C:\Windows\System32\ | Windows Audio Service | mmdevapi audioendpoints

Application (e.g., Chrome, Zoom, DAW) ↓ [WASAPI / DirectSound / WaveOut] ↓ MMDevAPI (mmdevapi.dll) ← User Mode ↓ [RPC / ALPC] ↓ AudioEndpointBuilder Service (svchost.exe) ← System Service ↓ Kernel Streaming (portcls.sys, ks.sys) ↓ Audio Hardware (HD Audio, USB Audio, Bluetooth)

#include <windows.h> #include <mmdeviceapi.h> // Release the enumerator pEnum-&gt;Release();

To interact with audio endpoints, developers use a set of COM-based interfaces defined in the Mmdeviceapi.h header : IMMDevice (mmdeviceapi.h) - Win32 apps | Microsoft Learn

The IAudioEndpointVolumeCallback interface provides notifications for audio endpoint volume changes. // Release the enumerator pEnum-&gt

// Release the enumerator pEnum->Release();