Quote Originally Posted by Andru View Post
I expect at least DSERR_INVALIDPARAM, otherwise for what this constant is?
In my experience, SERR_INVALIDCALL (and its equivalent in WinAPI / DX) is more common when parameters are incorrect, even though there are more meaningful error codes.

Quote Originally Posted by Andru View Post
Common sense says me that this method should have some checks inside
API and drivers cannot predict all possible invalid values that you can put through this method. Therefore, it is your responsibility to make sure that all parameters are valid and contain meaningful data.

Quote Originally Posted by Andru View Post
And this a normal return value for many of configurations, but not for ASUS Xonar DS one...
...which is also a normal situation considering that ASUS Xonar DS did not do anything wrong, since they do not need to check for validity of the parameters. The crash is a normal response in this case, which was at your fault for sending invalid data.

Think of it this way: government can make a protection on the trees in case you crash your car into them; however, a more practical approach is to recommend you not to crash your car into the trees and if you crash, it's your fault, not the trees.