I'm not seeing any calls to my DataIntersectionHandler at all - what I outlined was the sum total of all activity.
Jeff----- Original Message ----- From: "Eugene Muzychenko" <emuzychenko@xxxxxxxxx>
To: "Jeff Pages" <wdmaudiodev@xxxxxxxxxxxxx> Sent: Thursday, November 02, 2006 7:07 PM Subject: [wdmaudiodev] Re: My driver doesn't work on Vista RC2!
Hello Jeff!4. The stream's MappingAvailable function is called. In response I call IPortWavePciStream::GetMapping and receive one mapping. A second call to GetMapping returns STATUS_NOT_FOUND.5. The stream's MappingAvailable function is called again, and in response Icall IPortWavePciStream::GetMapping and receive another mapping. A second call to GetMapping returns STATUS_NOT_FOUND.6. The stream's RevokeMapping function is called twice, once for each of themappings obtained. 7. The stream's SetState function is called with state KSSTATE_ACQUIRE. 8. The stream's SetState function is called with state KSSTATE_STOP. 9. The stream object is released.I often see such behavior under Windows 2k/XP, and under Vista RC2 too. I think some upper audio layer (kmixer, sysaudio, DirectSound and/or MME) performs a kind of testing. A first stream is created, data buffer IRPs are passed causing MappingAvailable to be called, then a stream is destroyed. But next streams are created and used successfully.My first observation is that the call to my MappingAvailable function at step 4 seems odd, since according to the WDK documentation, this functionshould only be called if a previous call to IPortWavePciStream::GetMappingfailed.As I know, MappingAvailable is called in response to IOCTL_KS_READ_STREAM/IOCTL_KS_WRITE_STREAM IPRs if portcls mapping list is empty. So it is called when first data IRP is received.I don't believe this unsolicited call to MappingAvailable is causing the problem, but it's unexpected. If I ignore it instead of acquiring mappingsMappingAvailable is only a notification function, no more. You may respond by calling GetMapping or may not, it must not alter portcls behavior.My second observation is that the system never tries to set the stream stateto KSSTATE_RUN. Instead, after I've acquired those two mappings, it just immediately revokes them and releases the stream.It seems like a kind of testing.If my calling application is using the wave API, waveOutOpen returns MMSYSERR_ERROR. If it is a DirectSound application, everything succeeds until I call Play on my buffer which then returns E_POINTER.Try to protocol data intersection requests and their results. Maybe RC2 try to open "wider" stream for kmixer than RC1 and 2k/XP. Regards, Eugene ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/
****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/