Pritesh, It probably would have helped if you'd said something about what you're trying to achieve, since your reference to a timer object sugests you are writing a virtual driver rather than one that actually interacts with hardware. Is that the case, and if so why are you using WavePCI? WavePCI works fine if you use it the way it was intended, that is with hardware receiving the mappings, doing DMA transfers and then generating an interrupt which releases the processed mappings. If, as I suspect you're doing, you immediately release each mapping after you've received it, then the application side of the system will quickly empty or fill it (depending on whether it's render or capture) and make it available to you again through a call to MappingAvailable. So round and round it goes, and without something like hardware to take its time processing the mappings before releasing them, you will get what you're observing. The timing of the WavePCI model is essentially determined by how long the driver holds onto each mapping, not by calls to GetPosition. Try to think about what's going on behind the scenes. Typically the mappings come from the page table of either the buffer in kmixer or possibly the application's own buffer. Each time you release a mapping, it tells the application that it's free to be reused, and as soon as the application has done that, it gets handed back to the driver again. The only thing in that loop to set the pacing is the time the driver holds onto the mappings for, which on average should be the sample period multiplied by the number of samples in the mappings. I hope that helps. Jeff ----- Original Message ----- From: Abhay dey To: wdmaudiodev@xxxxxxxxxxxxx Sent: Thursday, October 16, 2008 6:12 PM Subject: [wdmaudiodev] Re: Problem about GetMapping() / ReleaseMapping() in WavePCI I also posted such mail few days back but there was no reply. There is not a single person on this mailing list who has worked on WavePCI ???? Your suggestions would really really help us. Waiting for your reply. On Tue, Oct 14, 2008 at 4:30 PM, pritesh gajjar <gajjar.pritesh@xxxxxxxxx> wrote: Hello All, I have implemented WavePCI in my driver. My mapping calls of GetMapping () and ReleaseMapping () are working fine. Following are thing which I have done. 1. I created DmaChannel through NewMasterDmaChannel(), this works fine gives DmaChannel object. Passed as out parameter to NewStream (). 2. Allocated tables through AllocateCommonBuffer() call. 3. Created a timer object , DPC object which calls DPC after every interval(e.g. 10ms) and wrote a DPC in which I am calling Notify() of PortCls. 4. Methods of WavePCI interface are implemented one of them is Service () which is invoked after above Notfiy() call by PortCls. 5. This Service() gives call to ReleaseMapping()/GetMapping() methods saves their out parameters in a table as ac'97 does. This is implemented as per MSDN documentation. Now the Driver runs continuously and consumes so many CPU cycles, the system slows down. But if I only obtain possible mappings in first GetMapping () call that is no MappingAvailable () then it runs smoothly. But still I do not get any audio only noise is produced. And one more thing I do get some value in VirtAddr pointer of GetMapping () . I also tried with common table between Capture / Renderer streams, but that didn't help. With IDmaChannel channel implementation also I tried, and passed casted stream object through Newstream(), but that also didn't helped. Is there something else also that in WavePCI it needs to be implemented. If anyone has any suggestion about then please reply ? -- Thanks and regards Pritesh