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 PMSubject: [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 PagesSent: Tuesday, March 17, 2009 1:30 AM To: wdmaudiodev@xxxxxxxxxxxxxSubject: [wdmaudiodev] Re: IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7Yes, 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 PMSubject: [wdmaudiodev] Re: IPortWaveRTStream::AllocateContiguousPagesForMdlproblem in Windows 7Hi: 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 thechances for this call to fail because a large block of contiguous physicalmemory 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 7Hi, 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=subscribeUnsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator: 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=subscribeUnsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribeModerator: 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/