[wdmaudiodev] Re: IPortWaveRTStream::AllocateContiguousPagesForMdl problem in Windows 7

  • From: "Jeff Pages" <barefeet@xxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 17 Mar 2009 19:30:27 +1100

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/

Other related posts: