Question

I have a Vista x64 machine with 6GB of RAM, and I'm attempting to test that a device driver functions properly when doing DMA to physical addresses above 4GB.

I've found the AllocationPreference registry key, which is supposed to "force allocations to allocate from higher addresses before lower addresses", but the page isn't clear whether this affects physical addresses or only virtual addresses. Based on the behavior of my code, I suspect it is only affecting virtual addresses.

I've also come across the nolowmem boot option, which is supposed to load "the operating system, device drivers, and all applications into addresses above the 4 GB boundary," but it seems to only be for 32-bit versions of Windows. I tried enabling on Vista x64, but the machine wouldn't boot up. I just set up this machine a couple of days ago, so it didn't have any service packs; I'm currently installing those to see if this is due to a Windows bug.

Is there any way to force Windows to allocate virtual addresses above 4GB backed by physical addresses above 4GB?

Was it helpful?
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top