Hi Jeff, Dogbert: We have identified the root cause - it's a combination of how IPortWaveRTStream::AllocateContiguousPagesForMdl is implemented and the optimization work done Win7 Memory Manager. The fix will be included in the future Win7 release. Thanks for reporting this issue. Cheng-mean Liu Microsoft This posting is provided "AS IS" with no warranties, and confers no rights. -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages Sent: Friday, March 20, 2009 6:45 PM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7 Thanks very much for your help. Jeff ----- Original Message ----- From: "Cheng-mean Liu (SOCCER)" <soccerl@xxxxxxxxxxxxx> To: <wdmaudiodev@xxxxxxxxxxxxx> Sent: Saturday, March 21, 2009 12:41 PM Subject: [wdmaudiodev] Re: IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7 > Thanks for information, Jeff. > > I am able to reproduce this issue with exactly same parameter on my Win7 > test box. > > We are investigating the root cause of it. > > Stay tuned... > > Thanks > > Cheng-mean Liu > Microsoft > > This posting is provided "AS IS" with no warranties, and confers no > rights. > -----Original Message----- > From: wdmaudiodev-bounce@xxxxxxxxxxxxx > [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages > Sent: Tuesday, March 17, 2009 1:49 AM > To: wdmaudiodev@xxxxxxxxxxxxx > Subject: [wdmaudiodev] Re: > IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7 > > Thanks. Typically it would be: > > LowerBound = 0; > UpperBound = 0xffffffffffffffffI64; > TotalBytes = 80; > > Jeff > > ----- Original Message ----- > From: "Cheng-mean Liu (SOCCER)" <soccerl@xxxxxxxxxxxxx> > To: <wdmaudiodev@xxxxxxxxxxxxx> > Sent: Tuesday, March 17, 2009 7:36 PM > Subject: [wdmaudiodev] Re: > IPortWaveRTStream::AllocateContiguousPagesForMdl > problem in Windows 7 > > >> Hi Jeff: >> >> Could you tell me the complete parameters that you pass in when calling >> this function? >> >> Thanks >> >> Cheng-mean Liu >> Microsoft >> >> This posting is provided "AS IS" with no warranties, and confers no >> rights. >> -----Original Message----- >> From: wdmaudiodev-bounce@xxxxxxxxxxxxx >> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages >> Sent: Tuesday, March 17, 2009 1:30 AM >> To: wdmaudiodev@xxxxxxxxxxxxx >> Subject: [wdmaudiodev] Re: >> IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7 >> >> Yes, but it is repeatedly failing calls requesting less than one page of >> memory. How can fragmentation cause that? >> >> This problem does not occur on Vista or Server 2008, just on Windows 7. >> >> Jeff >> >> ----- Original Message ----- >> From: "Cheng-mean Liu (SOCCER)" <soccerl@xxxxxxxxxxxxx> >> To: <wdmaudiodev@xxxxxxxxxxxxx> >> Sent: Tuesday, March 17, 2009 5:18 PM >> Subject: [wdmaudiodev] Re: >> IPortWaveRTStream::AllocateContiguousPagesForMdl >> problem in Windows 7 >> >> >>> Hi: >>> >>> On a successful call, IPortWaveRTStream::AllocateContiguousPagesForMdl >>> allocates a list of contiguous, nonpaged, physical memory pages and >>> returns a pointer to a memory descriptor list (MDL) that describes them. >>> >>> However, depending on the system state when this is made, the system's >>> pool of nonpaged memory might be fragmented, which could increase the >>> chances for this call to fail because a large block of contiguous >>> physical >>> memory will become less likely to be available. So, it's not unusual to >>> see failure from this call. >>> >>> By the way, there is hard limit in the portcls that it would return NULL >>> if TotalBytes parameter is greater than 90112 >>> >>> Hope this helps. >>> >>> Thanks >>> >>> Cheng-mean Liu >>> Microsoft >>> >>> This posting is provided "AS IS" with no warranties, and confers no >>> rights. >>> >>> -----Original Message----- >>> From: wdmaudiodev-bounce@xxxxxxxxxxxxx >>> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages >>> Sent: Monday, March 16, 2009 6:46 PM >>> To: wdmaudiodev@xxxxxxxxxxxxx >>> Subject: [wdmaudiodev] Re: >>> IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7 >>> >>> Thanks Dogbert. It's good to know it wasn't a case of me doing something >>> fundamentally stupid. I've checked AllocateContiguousPagesForMdl() on >>> the >>> RC >>> version of Vista SP2 and it works fine in that, so hopefully it's just a >>> glitch in the Windows 7 beta that will be corrected in the next update. >>> >>> Jeff >>> >>> ----- Original Message ----- >>> From: "Dogbert" <dogber1@xxxxxxxxx> >>> To: <wdmaudiodev@xxxxxxxxxxxxx> >>> Sent: Monday, March 16, 2009 4:09 AM >>> Subject: [wdmaudiodev] Re: >>> IPortWaveRTStream::AllocateContiguousPagesForMdl >>> problem in Windows 7 >>> >>> >>>> Hi, >>>> >>>> I'm having similar issues on Windows 7 (build 7048, x86): >>>> AllocateContiguousPagesForMdl() returns NULL for most of the time to >>>> the >>>> effect that STATUS_INSUFFICIENT_RESOURCES has to be returned for >>>> IMiniportWaveRTStream::AllocateAudioBuffer(). This renders my audio >>>> driver unusable in Windows 7. >>>> The peculiar thing is that AllocateContiguousPagesForMdl() fails no >>>> matter if the size parameter passed to the function is larger or lower >>>> than the page size. >>>> As a workaround, I tried to fiddle around with AllocatePagesForMdl() >>>> which works fine for every size. Since my hardware is from the stone >>>> age >>>> and doesn't support scatter-gather tables, I lowered the size parameter >>>> to the size of a single page so as to avoid fragmentation. This value >>>> seems to be rejected by the audio engine because >>>> IMiniportWaveRTStream::FreeAudioBuffer() is called almost directly >>>> after >>>> this size is returned by IMiniportWaveRTStream::AllocateAudioBuffer(). >>>> >>>> Is there something that I am missing here or is this indeed a bug which >>>> I happened to stumble upon? >>>> >>>> dogbert >>>> >>>> ****************** >>>> >>>> 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/ >>> >>> >>> ****************** >>> >>> 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/ >> >> >> ****************** >> >> 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/ > > > ****************** > > 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/ ****************** 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/