2017-07-08 8 views
0

J'essaie de récupérer la valeur totale de la mémoire physique disponible de ma machine via la classe Win32_OperatingSystem en C#. Voici comment je récupère cette valeur.Mémoire physique totale récupérée à partir de Win32_ComputerSystem ne correspond pas à la valeur de l'outil DirectX

ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); 
     ManagementObjectCollection moc = mc.GetInstances(); 
     if (moc.Count != 0) 
     { 
      foreach (ManagementObject MO in mc.GetInstances()) 
      { 
       try 
       { 
        computerSystemDetails["TotalPhysicalMemory"] = (MO["TotalPhysicalMemory"] == null) ? new string[] { } : new string[] { MO["TotalPhysicalMemory"].ToString() }; 
       } 
       catch (Exception ex) 
       { 
        logger.Error("GetSystemDetails", "Error occurred when retrieving the computer system information", ex); 
       } 
      } 
     } 
     return computerSystemDetails; 

La valeur que j'obtiens de ce qui précède est de 16243 Mo. Mais quand j'utilise l'outil de diagnostic DirectX, j'obtiens la valeur 16384MB. Quelle est l'explication de cette différence? Veuillez nous conseiller

Répondre

1

Le documentation pour cette propriété explique pourquoi:

Soyez conscient que, dans certaines circonstances, cette propriété ne peut pas renvoyer une valeur précise de la mémoire physique. Par exemple, il n'est pas précis si le BIOS utilise une partie de la mémoire physique. Pour une valeur précise, utilisez plutôt la propriété Capacity dans Win32_PhysicalMemory.