enumAudioEndpoints method

IMMDeviceCollection? enumAudioEndpoints(
  1. EDataFlow dataFlow,
  2. DEVICE_STATE dwStateMask
)

Generates a collection of audio endpoint devices that meet the specified criteria.

Throws a WindowsException on failure.

To learn more, see learn.microsoft.com/windows/win32/api/mmdeviceapi/nf-mmdeviceapi-immdeviceenumerator-enumaudioendpoints.

Implementation

IMMDeviceCollection? enumAudioEndpoints(
  EDataFlow dataFlow,
  DEVICE_STATE dwStateMask,
) {
  final ppDevices = adaptiveCalloc<VTablePointer>();
  final hr$ = HRESULT(
    _EnumAudioEndpointsFn(ptr, dataFlow, dwStateMask, ppDevices),
  );
  if (hr$.isError) {
    free(ppDevices);
    throw WindowsException(hr$);
  }
  final result$ = ppDevices.value;
  free(ppDevices);
  if (result$.isNull) return null;
  return .new(result$);
}