The only person who can help you is yourself. ;)
Finally the problem has been solved. The cause of such behavior (the objects of QAudioInput and QAudioOutput classes work only with default devices) is that I use Russian localization of MS Windows 7. So if you use or are going to use Russian (and I guess another not English version) of MS Windows 7 you should read the rest of this post.
The point is that QAudioDeviceInfo::availableDevices method returns list of QAudioDeviceInfo objects. And every object of that list describes its own audio device from all available in the system devices. By the by, there is one virtual device which relates with default system device and the name of that virtual device is always “Default”. So the whole point is all another devices in Russian localization of Windows has Russian names (like «Динамики …» or «Микрофон …») and that’s why Qt can’t recognize them. For example the QAudioDeviceInfo::devicename returns something like “D2fq8&$f32” and QAudioDeviceInfo::supportedchannels (supportedcodec, etc.) returns null arrays. So you can’t work with those devices. I don’t know who mess it up - Qt methods or WinAPI functions (which are wrapped into Qt methods how I guess) but we have what we have. My opinion is that this problem occurs because of such thing: Windows contains the names of devices in Unicode (each char takes two bytes), but WinAPI function which is response to give you the name of device returns this name in ASCII or something (one byte per char). Or maybe Qt holds than device names in ASCII. Anyhow the cause of the issue hides in the circumstance of not correct device name encoding. It’s just my guess. If anybody can correct me, please, feel free to do that. ;)