Одним из решений, которое я использовал для этого, чтобы получить диагностику машины ранее, было использование DLLImport.
См. P-Invoke
Надеюсь, это поможет
Пит
В ответ на ваш комментарий
При использовании импорта DLL вы должны объявить обертку функции самостоятельно. В приведенном ниже коде вы можете увидеть открытый статический extern void, который говорит компилятору, что это внешний вызов функции GlobalMemoryStatus, которая находится в DLLImported kernel32.dll. Структура MemoryStatus, которая является выходным параметром функции, заполняется внутри библиотеки kernel32 и возвращается обратно полностью заполненной.
Скопируйте это в свой код и прочитайте комментарии, они должны помочь вам понять это.
/// <summary>
/// Populates a memory status struct with the machines current memory status.
/// </summary>
/// <param name="stat">The status struct to be populated.</param>
[DllImport("kernel32.dll")]
public static extern void GlobalMemoryStatus(out MemoryStatus stat);
/// <summary>
/// The memory status struct is populated by the GlobalMemoryStatus external dll call to Kernal32.dll.
/// </summary>
public struct MemoryStatus
{
public uint Length;
public uint MemoryLoad;
public uint TotalPhysical;
public uint AvailablePhysical;
public uint TotalPageFile;
public uint AvailablePageFile;
public uint TotalVirtual;
public uint AvailableVirtual;
}
// copy the guts of this method and add it to your own method.
public void InspectMemoryStatus()
{
MemoryStatus status = new MemoryStatus();
GlobalMemoryStatus(out status);
Debug.WriteLine(status.TotalVirtual);
}
Это должно позволить вам получить диагностику памяти машины.