mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-06-29 06:36:24 +02:00

* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Silence dotnet format IDE0060 warnings * Silence dotnet format IDE0059 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2211 warnings * Silence CA1806 and CA1834 issues * Fix formatting for switch expressions * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Revert formatting changes for while and for-loops * Format if-blocks correctly * Run dotnet format whitespace after rebase * Run dotnet format style after rebase * Run dotnet format analyzers after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Add comments to disabled warnings * Remove a few unused parameters * Replace MmeShadowScratch with Array256<uint> * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Run dotnet format after rebase * Address IDE0251 warnings * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Second dotnet format pass * Fix build issues * Fix StructArrayHelpers.cs * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Fix return statements * Fix naming rule violations * Update src/Ryujinx.Common/Utilities/StreamUtils.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Add trailing commas * Address review feedback * Address review feedback * Rename remaining type parameters to TKey and TValue * Fix manual formatting for logging levels * Fix spacing before comments --------- Co-authored-by: Ac_K <Acoustik666@gmail.com>
87 lines
2.7 KiB
C#
87 lines
2.7 KiB
C#
using Ryujinx.Common.Logging;
|
|
using System;
|
|
using System.Management;
|
|
using System.Runtime.InteropServices;
|
|
using System.Runtime.Versioning;
|
|
|
|
namespace Ryujinx.Common.SystemInfo
|
|
{
|
|
[SupportedOSPlatform("windows")]
|
|
partial class WindowsSystemInfo : SystemInfo
|
|
{
|
|
internal WindowsSystemInfo()
|
|
{
|
|
CpuName = $"{GetCpuidCpuName() ?? GetCpuNameWMI()} ; {LogicalCoreCount} logical"; // WMI is very slow
|
|
(RamTotal, RamAvailable) = GetMemoryStats();
|
|
}
|
|
|
|
private static (ulong Total, ulong Available) GetMemoryStats()
|
|
{
|
|
MemoryStatusEx memStatus = new();
|
|
if (GlobalMemoryStatusEx(ref memStatus))
|
|
{
|
|
return (memStatus.TotalPhys, memStatus.AvailPhys); // Bytes
|
|
}
|
|
|
|
Logger.Error?.Print(LogClass.Application, $"GlobalMemoryStatusEx failed. Error {Marshal.GetLastWin32Error():X}");
|
|
|
|
return (0, 0);
|
|
}
|
|
|
|
private static string GetCpuNameWMI()
|
|
{
|
|
ManagementObjectCollection cpuObjs = GetWMIObjects("root\\CIMV2", "SELECT * FROM Win32_Processor");
|
|
|
|
if (cpuObjs != null)
|
|
{
|
|
foreach (var cpuObj in cpuObjs)
|
|
{
|
|
return cpuObj["Name"].ToString().Trim();
|
|
}
|
|
}
|
|
|
|
return Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER").Trim();
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
private struct MemoryStatusEx
|
|
{
|
|
public uint Length;
|
|
public uint MemoryLoad;
|
|
public ulong TotalPhys;
|
|
public ulong AvailPhys;
|
|
public ulong TotalPageFile;
|
|
public ulong AvailPageFile;
|
|
public ulong TotalVirtual;
|
|
public ulong AvailVirtual;
|
|
public ulong AvailExtendedVirtual;
|
|
|
|
public MemoryStatusEx()
|
|
{
|
|
Length = (uint)Marshal.SizeOf<MemoryStatusEx>();
|
|
}
|
|
}
|
|
|
|
[LibraryImport("kernel32.dll", SetLastError = true)]
|
|
[return: MarshalAs(UnmanagedType.Bool)]
|
|
private static partial bool GlobalMemoryStatusEx(ref MemoryStatusEx lpBuffer);
|
|
|
|
private static ManagementObjectCollection GetWMIObjects(string scope, string query)
|
|
{
|
|
try
|
|
{
|
|
return new ManagementObjectSearcher(scope, query).Get();
|
|
}
|
|
catch (PlatformNotSupportedException ex)
|
|
{
|
|
Logger.Error?.Print(LogClass.Application, $"WMI isn't available : {ex.Message}");
|
|
}
|
|
catch (COMException ex)
|
|
{
|
|
Logger.Error?.Print(LogClass.Application, $"WMI isn't available : {ex.Message}");
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|