什么是Win32_PhysicalMemory类中的Bank标签

问题描述:

我在C#中使用'ObjectQuery'来获取系统上安装的总RAM。我从'Win32_PhysicalMemory'对象中捕获'容量'。 以下是代码:什么是Win32_PhysicalMemory类中的Bank标签

double totalCapacity = 0; 
ObjectQuery objectQuery = new ObjectQuery("select * from Win32_PhysicalMemory"); 
ManagementObjectSearcher searcher = new 
ManagementObjectSearcher(objectQuery); 
ManagementObjectCollection vals = searcher.Get(); 
foreach (ManagementObject val in vals) 
{ 
    totalCapacity += System.Convert.ToDouble(val.GetPropertyValue("Capacity")); 
} 
double ramCapacity = totalCapacity/1048576; 
return ramCapacity.ToString(); 

这是大多数系统运作良好。但是有一些系统,其中安装的RAM是1 GB,但被代码抓取为512 MB。 编辑:它是1 GB的单个RAM棒)

我还检查“BankLabel”变量在这些系统上的“Win32_PhysicalMemory”对象。它如下'Bank0/1'。 现在据我的理解,我猜测1GB的内存已经被分成两个512-512MB的存储区并且被切换。

  1. 现在的问题是,我的理解是关于内存分成两个银行,因此显示为每个512 MB。
  2. 也有可能将内存分成两个不相等的银行,如3 GB分为1 GB和2 GB。

我不确定你的问题的答案,但我想我有一个解决你的问题。试试这个:

ObjectQuery objectQuery = new ObjectQuery("select * from Win32_ComputerSystem"); 

val.GetPropertyValue("TotalPhysicalMemory") 

,将让你的RAM数量以字节为单位。您必须将其转换为MiB或GiB。另一方面,如果你试图确定系统中RAM的大小,而不是系统中RAM的大小,那么打开一个,看看它里面是否有多个棒。这将很快回答你的问题。

+1

是的,我已经检查忘记提及它,它是一个1GB的RAM棒(得到它为512 MB)。我想确定以编程方式安装相同。 'Win32_ComputerSystem'中的'TotalPhysicalMemory'属性在4GB系统上给出了'RAM'为3386 MB。 'Win32_PhysicalMemory'中的'容量'给出了4096 MB,这是正确的。 –

+0

@SaurabhHarwande给你道具。我不知道TotalPhysicalMemory不会计算其他硬件使用的内存(例如共享视频内存)。 [此链接](http://briandesmond.com/blog/getting-total-installed-memory-with-wmi/)和[此链接](http://www.computerperformance.co.uk/vbscript/wmi_memory。 htm)更多地解释它。 – Tim