我有一台具有 6GB RAM 的 Vista x64 机器,我正在尝试测试设备驱动程序在对 4GB 以上的物理地址执行 DMA 时是否正常工作。
我找到了AllocationPreference 注册表项,它应该“强制分配在较低地址之前从较高地址分配”,但该页面不清楚这是否会影响物理地址或仅影响虚拟地址。根据我的代码行为,我怀疑它只会影响虚拟地址。
我还遇到过 nolowmem 启动选项,它应该将“操作系统、设备驱动程序和所有应用程序加载到 4 GB 边界以上的地址中”,但它似乎只适用于 32 位版本的 Windows。我尝试在 Vista x64 上启用,但机器无法启动。几天前我刚刚设置了这台机器,所以它没有任何服务包;我目前正在安装这些以查看这是否是由于 Windows 错误造成的。
有没有办法强制 Windows 分配由 4GB 以上的物理地址支持的 4GB 以上的虚拟地址?