@Davide I figured it out. The problem is that PortAudio
calls IMMDevice::Activate()
passing the IID not for
IAudioClient
, but for
IAudioClient3
. Problem is, API Monitor is a fairly old piece of software (2013) - it doesn't know about
IAudioClient3
which first appeared in Windows 10 (i.e. in 2015). This means API Monitor doesn't understand the interface of the COM object being returned from
IMMDevice::Activate()
and is therefore unable to trace any of the follow on WASAPI calls that are being made on that object.
Thankfully, it is possible to tell API Monitor about API definitions it doesn't know about. I created an API definition file by hand for
IAudioClient3
- please find attached. Unpack the zipfile in
C:\Program Files\rohitab.com\API Monitor\API\Interfaces\CoreAudio
(alongside
IAudioClient.xml
and
IAudioClient2.xml
), check "Disable caching" in the API Monitor General Options to force it to reload its API definitions, restart API Monitor then make sure
IAudioClient3
is checked under "Audio and Video" > "Core Audio" > "Windows Audio Session". From that point on it should be able to trace PortAudio WASAPI calls and you should see calls to
IAudioClient3::Initialize()
. Enjoy!