There is the IMMDeviceEnumerator interface which can help you to obtain pointer to the IMMDevice you need (IMMDevice
interface represents an audio endpoint device: render or capture):
Anyway, when you have the pointer to the IMMDevice you need to look up supported formats for, you can get the pointer to the IAudioClient interface using IMMDevice::Activate method. IAudioClient
interface allows you to check if the device supports an audio format or not (method IAudioClient::IsFormatSupported, audio format is described by WAVEFORMATEX structure). Unfortunately, right now there is no method in Core Audio API which returns a list of supported formats by the device, so you will need to enumerate possible values of WAVEFORMATEX members structure and check if every format supported by device by yourself.
But you can get the format that user did select in the DefaultFormat section by using IMMDevice property store (IMMDevice::OpenPropertyStore) and then checking for the PKEY_AudioEngine_DeviceFormat
key (here is the description: MSDN: PKEY_AudioEngine_DeviceFormat).
It would be useful to read: