我想知道如何在C#中找到主板上可用内存插槽和已使用插槽的数量。通过WMI,我可以找到插槽数量的总数以及内存条列表,但是在这两种情况下提供的信息,特别是后者,似乎很普遍,并且会因主板而异。
本质上,我想创建一个列表,列出主板上每个插槽和具体被哪些插槽使用,以及使用了什么类型的内存。我想这可以通过WMI完成,但正如我所说,“Win32_PhysicalMemory”中的“DeviceLocator”令人困惑和不确定。
需要结合Win32_PhysicalMemory提供的信息,以及Win32_BaseBoard中的“Manufacturer”和“Product”字段等信息,创建一组已知插槽,并将Win32_PhysicalMemory中的“DeviceLocator”字段与之进行比较。虽然不是最理想的解决方案,但似乎是唯一明显的解决方案。
使用Win32,您应该能够调用GetSystemFirmwareTable从固件表提供程序(SMBIOS表)检索指定的固件表。虽然Pinvoke.NET对于这个非托管条目没有给出任何信息,但您可以尝试这种搜索方式。您可能会在System Management BIOS (SMBIOS)网站上找到一些帮助。
请看这里