I have run into an obstacle while trying to restart a direct sound device on windows 7. What I'm doing is clasical stuff:
- Create the interface
DirectSoundCaptureCreate8(CConfig::GetMainSoundDeviceCaptureGUID(), &m_radioRecordObj, NULL);
- Create the buffer
m_radioRecordObj->CreateCaptureBuffer(&m_radioRecordDesc, &pDsb, NULL);
pDsb->QueryInterface(IID_IDirectSoundCaptureBuffer8, (LPVOID*) &m_radioRecordBuf);
- Start the buffer
after some time I'm stopping and releasing the buffer
and after that i repeat the former sequence for creating the interface and creating and starting of the buffer.
The scenario is: I start the program on a remote machine and it runs smoothly, even the restarting of the sound interface, up to the point when I dissconnect (not logging out, just dissconect) from the remote machine. After that, the first sond interface restart produces an error (DSERR_NODRIVER) when calling DirectSoundCaptureCreate8.
I have produced this behaviour on a local macnine too by locking the machine (Windows logo key and the + L).
Further more, I have tried to schedule the start of the application after I have dissconected from the machine. And guess what, the applicaton runs ok, but only until I connect to it via remote desktop when it again breaks with DSERR_NODRIVER on the first sound interface restart.
Hope that someone has stumbled over this problem and has a solution to it.