Step 7: Shutting Down DirectSound

Before closing, your application needs to close any open wave file and release the DirectSoundNotify and DirectSound objects. Note that because you queried for the IDirectSoundNotify interface from a DirectSoundBuffer object, you must release the DirectSoundNotify object before releasing DirectSound. Releasing DirectSound automatically releases any existing buffers.

The following function does all the necessary cleanup:

void DSExit(void)
{
    WaveCloseReadFile(&hmmio, &pwfx);
    if (lpdsNotify)
        lpdsNotify->Release();
    if (lpds)
        lpds->Release(); 
}