>Do you have any information that backs this ?
Sure. It used to even be mentioned somewhere in the docs I think (though it
doesn’t anymore). Just try calling it a few times with varying sizes and at
different times during boot, you’ll then see different results when you
!pool the return value.
For example, here’s one successful call asking for 64K:
kd> !pool 0x885e1000 2
Pool page 885e1000 region is Nonpaged pool
*885e1000 : large page allocation, Tag is Cont, size is 0x10000 bytes
Pooltag Cont : Contiguous physical memory allocations for device
drivers
And then followed immediately by another successful call asking for 10MB:
kd> !pool 0x8de00000 2
Pool page 8de00000 region is Unknown
8de00000 is not a valid large pool allocation, checking large session
pool…
8de00000 is not a valid small pool allocation, checking large pool…
unable to get pool big page table - either wrong symbols or pool tagging is
disabled
8de00000 is freed (or corrupt) pool
Bad allocation size @8de00000, zero is invalid
***
*** An error (or corruption) in the pool was detected;
*** Pool Region unknown (0xFFFFFFFF8DE00000)
***
*** Use !poolval 8de00000 for more details.
***
kd> !pte 0x8de00000
VA 8de00000
PDE at C0602378 PTE at C046F000
contains 000000002B0FD863 contains 000000007A0AA963
pfn 2b0fd —DA–KWEV pfn 7a0aa -G-DA–KWEV
Note that this experiment was done on Win7, though it looks as though you’ll
get the same type of results on Win8.
Can a call to MmAllocatePagesForMdl also charge against the pool ?
No. I suspect that the expectation there is that you’ll be *optionally*
mapping all or pieces of that memory using System PTEs. No point in wasting
a virtually contiguous chunk of non-paged pool for something that might
never be used.
-scott
OSR
wrote in message news:xxxxx@ntdev…
MmAllocateContiguousMemory may satisfy some allocations out of non-paged
pool, so while I’ve never personally caused this issue I would say that
it’s possible.
Do you have any information that backs this ? Can a call to
MmAllocatePagesForMdl also charge against the pool ?
//Daniel