I am working on a patch that does the same thing. One thing that I was wondering about is if anything uses IDirectSoundNotifyImpl_QueryInterface because a notify is part of a buffer and not the other way around so this should never be called looking for a buffer interface. The code also doesn't check the GUID. If this code can be removed, then so can the buffer pointers in the data structure. This cleans up the code further. I'm also working on adding an IDsDriverNotify pointer to a hardware notify for further performance improvements. Giving the IDsDriver and IDsCaptureDriver access to the notifications could allow the driver to set fragment size and number to what the application wants and also would allow the driver to do the notifications directly. > IDirectSoundNotify8::Release didn't remove notify array from > IDirectSoundBufferImpl. Suppose an application has set notification > positions, and one of the positions is DSBPN_OFFSETSTOP, then it set > some new positions. The new associated events will never be signaled, > even if the application call Release and QueryInterface again before > SetNotificationPositions. > > ChangeLog: > - Added position-notify array cleanup for IDirectSoundNotify.