#define IActivateAudioInterfaceAsyncOperation_GetActivateResult(p, a, b) ((IActivateAudioInterfaceAsyncOperation*)p)->GetActivateResult(a, b)
#else
#define IActivateAudioInterfaceAsyncOperation_GetActivateResult(p, a, b) ((IActivateAudioInterfaceAsyncOperation*)p)->lpVtbl->GetActivateResult((IActivateAudioInterfaceAsyncOperation*)p, a, b)
// Here is where we try to determine the best format to use with the device. If the client if wanting exclusive mode, first try finding the best format for that. If this fails, fall back to shared mode.
WAVEFORMATEXTENSIBLE*pBestFormatTemp=NULL;
result=MAL_FORMAT_NOT_SUPPORTED;
if(pConfig->preferExclusiveMode){
#ifdef MAL_WIN32_DESKTOP
// In exclusive mode on desktop we always use the backend's native format.
// Unfortunately we need to release and re-acquire the audio client according to MSDN. Seems silly - why not just call IAudioClient_Initialize() again?!
returnmal_post_error(pDevice,"[WASAPI] Failed to retrieve internal buffer from playback device in preparation for sending new data to the device.",MAL_FAILED_TO_MAP_DEVICE_BUFFER);
returnmal_post_error(pDevice,"[WASAPI] Failed to release internal buffer from playback device in preparation for sending new data to the device.",MAL_FAILED_TO_UNMAP_DEVICE_BUFFER);
mal_post_error(pDevice,"[WASAPI] WARNING: Failed to retrieve internal buffer from capture device in preparation for sending new data to the client.",MAL_FAILED_TO_MAP_DEVICE_BUFFER);
mal_post_error(pDevice,"[WASAPI] WARNING: Failed to release internal buffer from capture device in preparation for sending new data to the client.",MAL_FAILED_TO_UNMAP_DEVICE_BUFFER);