如何获取用户态总虚拟内存?
How to get user mode total virtual memory?
要求 Win 7/Win 10 (BIOS/EFI)。我一直在研究这个,但没能找到办法,故事是这样的:
在一个程序中,我使用bcdedit /set IncreaseUserVa 3872
将用户模式虚拟地址space设置为3872MB,然后我重新启动。
对于单元测试,我需要检查是否使用 C# 完成了更改。经过大量研究,我尝试了以下方法:
- This similar solution here。我收到一个例外:
System.AccessViolationException HResult=0x80004003 Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
我是 运行 VS 作为管理员帐户的管理员。
- 使用
Process.GetCurrentProcess().X
(有一些内存属性),但这些属性不适用于整个系统。
- [systemdrive]:/boot 中的 BCD reg 文件包含此数据。在注册表编辑器中 HKLM/BCD000000 我无法在网络上的任何地方找到要查看的注册表项
- 导入 Microsoft.VisualBasic 并使用 ComputerInfo class,这个很有前途,但我设置为 3872MB (3.78GB) 并且返回为 ~3GB
有人能帮忙吗?在 BCD000000 或其他方式中找到正确的注册码?
想通了。
ComputerInfo myCompInfo = new ComputerInfo();
myCompInfo.TotalVirtualMemory();
BCDEdit 不允许设置超过 3GB 的虚拟地址 space。
要求 Win 7/Win 10 (BIOS/EFI)。我一直在研究这个,但没能找到办法,故事是这样的:
在一个程序中,我使用bcdedit /set IncreaseUserVa 3872
将用户模式虚拟地址space设置为3872MB,然后我重新启动。
对于单元测试,我需要检查是否使用 C# 完成了更改。经过大量研究,我尝试了以下方法:
- This similar solution here。我收到一个例外:
System.AccessViolationException HResult=0x80004003 Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
我是 运行 VS 作为管理员帐户的管理员。 - 使用
Process.GetCurrentProcess().X
(有一些内存属性),但这些属性不适用于整个系统。 - [systemdrive]:/boot 中的 BCD reg 文件包含此数据。在注册表编辑器中 HKLM/BCD000000 我无法在网络上的任何地方找到要查看的注册表项
- 导入 Microsoft.VisualBasic 并使用 ComputerInfo class,这个很有前途,但我设置为 3872MB (3.78GB) 并且返回为 ~3GB
有人能帮忙吗?在 BCD000000 或其他方式中找到正确的注册码?
想通了。
ComputerInfo myCompInfo = new ComputerInfo();
myCompInfo.TotalVirtualMemory();
BCDEdit 不允许设置超过 3GB 的虚拟地址 space。