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.
我有一台带有6GB内存的Vista x64机器,我正在尝试测试设备驱动程序在DMA到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.
我找到了AllocationPreference注册表项,它应该“强制分配从较低地址之前的较高地址分配”,但页面不清楚这是影响物理地址还是仅影响虚拟地址。根据我的代码行为,我怀疑它只影响虚拟地址。
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.
我还遇到了nolowmem启动选项,它应该将“操作系统,设备驱动程序和所有应用程序加载到4 GB边界以上的地址”,但它似乎只适用于32位版本的Windows。我尝试在Vista x64上启用,但机器无法启动。我刚刚在几天前安装了这台机器,所以它没有任何服务包;我正在安装那些,看看这是否是由于Windows的错误。
Is there any way to force Windows to allocate virtual addresses above 4GB backed by physical addresses above 4GB?
有没有办法强制Windows分配超过4GB的物理地址支持的4GB以上的虚拟地址?