If(CLSIDFromString((LPOLESTR)_active.classID, (LPCLSID)&classID) != S_OK) return false Initialization code: //_active.classID retrieved from choosing one of HKLM\SOFTWARE\ASIO\*\CLSID entries I am using the direct COM interface, since this is a C++ project. Other closed-source ASIO applications seem to work okay, but I can’t analyze what they’re doing differently for obvious reasons. Although I’ve followed host\sample\hostsample.cpp as closely as possible. I’ve tried adding lots of Sleep() commands in case the driver couldn’t keep up, but to no avail.Ĭan anyone please help me with how to avoid this? I strongly believe they are vendor driver bugs (a driver should never crash, no matter what inputs you give it, it should return error codes instead), however I may well be using the API wrong.
This takes down my entire application, even though ASIO is running in its own separate thread. The drivers appear to be crashing internally whenever I try to stop/release them, even when I do nothing in response to the callback messages.
I have written an ASIO output driver in C++ for low-latency audio playback in my software.Īnd while it works great for my Audigy Rx drivers, as well as with ASIO4ALL, it is crashing with many other drivers, including: