OSDN Git Service

6ebff5becbdae88fdf774c8dfbe89b6c6b4b6641
[dtxmania/dtxmania.git] / DTXMania / コード / 全体 / CPutSystemLog.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using System.Diagnostics;
7 using System.Management;
8
9 namespace DTXMania
10 {
11         /// <summary>
12         /// システム環境のログを出力する
13         /// </summary>
14         public static class CPutSystemLog
15         {
16                 delegate void SystemLogDelegate(System.Management.ManagementObject mo);
17
18                 private static void TryPutSystemLog(string path, SystemLogDelegate fn)
19                 {
20                         System.Management.ManagementClass mc = new System.Management.ManagementClass(path);
21                         System.Management.ManagementObjectCollection moc = mc.GetInstances();
22                         try
23                         {
24                                 foreach (System.Management.ManagementObject mo in moc)
25                                 {
26                                         fn(mo);
27                                 }
28                         }
29                         catch (Exception e)
30                         {
31                                 // The Mono runtime doesn't implement everything
32                                 Trace.TraceInformation("{0}: {1}: {2}", path, e.GetType(), e.Message);
33                                 Console.Write("{0}: {1}: {2}\n", path, e.GetType(), e.Message);
34                         }
35                         moc.Dispose();
36                         mc.Dispose();
37                 }
38
39                 public static void PutSystemLog()
40                 {
41                         TryPutSystemLog("Win32_Processor", (mo) => {
42                                 Trace.TraceInformation("-------------------------");
43                                 Trace.TraceInformation("CPU Information:");
44                                 //Trace.TraceInformation("DeviceID      = {0}", mo["DeviceID"]);
45                                 Trace.TraceInformation("Name          = {0}", mo["Name"]);
46                                 Trace.TraceInformation("MaxClockSpeed = {0}MHz", mo["MaxClockSpeed"]);
47                                 Trace.TraceInformation("L2CacheSize   = {0}KB", mo["L2CacheSize"]);
48                                 Trace.TraceInformation("L3CacheSize   = {0}KB", mo["L3CacheSize"]);
49                                 Trace.TraceInformation("NumberOfCores = {0}", mo["NumberOfCores"]);
50                                 Trace.TraceInformation("NumberOfLogicalProcessors = {0}", mo["NumberOfLogicalProcessors"]);
51                         });
52
53                         TryPutSystemLog("Win32_OperatingSystem", (mo) => {
54                                 Trace.TraceInformation("-------------------------");
55                                 Trace.TraceInformation("OS Information:");
56                                 //簡単な説明(Windows 8.1では「Microsoft Windows 8.1 Pro」等)
57                                 Trace.TraceInformation("OS: " + mo["Caption"]);
58                                 //バージョン(Windows 8.1では、「6.3.9600」)
59                                 Trace.TraceInformation("Version: " + mo["Version"]);
60                                 //ビルド番号(Windows 8.1では「9600」)
61                                 //Trace.TraceInformation( "BuildNumber: " + mo["BuildNumber"]);
62
63                                 //サービスパック(Windows 8.1ではNULL)
64                                 Trace.TraceInformation("CSDVersion (ServicePack): " + mo["CSDVersion"]);
65                                 //言語(日本語は「1041」)
66                                 Trace.TraceInformation("OSLanguage: " + mo["OSLanguage"]);
67
68                                 Trace.TraceInformation("OSArchitecture: " + mo["OSArchitecture"]);
69
70                                 //Trace.TraceInformation("TotalVisibleMemorySize = {0}", mo["TotalVisibleMemorySize"]);
71                         });
72
73                         Trace.TraceInformation("-------------------------");
74                         Trace.TraceInformation("General Environment Information:");
75                         //Trace.TraceInformation("OS Version: " + Environment.OSVersion);       // fake version will be returned (due to the lack of manifest settings)
76                         //Trace.TraceInformation("ProcessorCount: " + Environment.ProcessorCount.ToString());
77                         Trace.TraceInformation("CLR Version: " + Environment.Version.ToString());
78                         Trace.TraceInformation("SystemPageSize: " + Environment.SystemPageSize.ToString());
79
80                         var cominfo = new Microsoft.VisualBasic.Devices.ComputerInfo();
81                         Trace.TraceInformation("TotalPhysicalMemorySize: {0:F2}GB", (cominfo.TotalPhysicalMemory / 1024f / 1024f / 1024f));
82                         Trace.TraceInformation("VirtialMemorySize: {0:F2}GB", (cominfo.TotalVirtualMemory / 1024f / 1024f / 1024f));
83                         Trace.TraceInformation("FreePhysicalMemorySize: {0:F2}MB", (cominfo.AvailablePhysicalMemory / 1024f / 1024f));
84                         Trace.TraceInformation("FreeVirtualMemorySize: {0:F2}MB", (cominfo.AvailableVirtualMemory / 1024f / 1024f));
85                         //Trace.TraceInformation(cominfo.OSFullName + ", " + cominfo.OSPlatform + ", " + cominfo.OSVersion);
86
87                         Trace.TraceInformation("-------------------------");
88                         Trace.TraceInformation("Physical Memory Information:");
89                         TryPutSystemLog("Win32_PhysicalMemory", (mo) => {
90                                 Trace.TraceInformation("Capacity: {0:F2}GB", (Convert.ToInt64(mo["Capacity"]) / 1024f / 1024f / 1024f));
91                         });
92
93                         TryPutSystemLog("Win32_DisplayControllerConfiguration", (mo) => {
94                                 Trace.TraceInformation("-------------------------");
95                                 Trace.TraceInformation("Display Adapter Information:");
96                                 Trace.TraceInformation("Name: " + mo["Name"]);
97                                 Trace.TraceInformation("VideoMode: " + mo["VideoMode"]);
98                                 Trace.TraceInformation("HorizontalResolution: " + mo["HorizontalResolution"]);
99                                 Trace.TraceInformation("VerticalResolution: " + mo["VerticalResolution"]);
100                                 Trace.TraceInformation("RefreshRate: " + mo["RefreshRate"]);
101                         });
102
103                         TryPutSystemLog("Win32_VideoController", (mo) => {
104                                 Trace.TraceInformation("-------------------------");
105                                 Trace.TraceInformation("Video Controller Information:");
106                                 Trace.TraceInformation("Description: " + mo["Description"]);
107                                 Trace.TraceInformation("AdapterRAM: {0}MB", (Convert.ToInt64(mo["AdapterRAM"]) / 1024f / 1024f));
108                                 Trace.TraceInformation("CapabilityDescriptions: " + mo["CapabilityDescriptions"]);
109                         });
110
111                         TryPutSystemLog("Win32_DesktopMonitor", (mo) => {
112                                 Trace.TraceInformation("-------------------------");
113                                 Trace.TraceInformation("Display Information:");
114                                 Trace.TraceInformation("Description: " + mo["Description"]);
115                                 Trace.TraceInformation("PixelsPerXLogicalInch: " + mo["PixelsPerXLogicalInch"]);
116                                 Trace.TraceInformation("PixelsPerYLogicalInch: " + mo["PixelsPerYLogicalInch"]);
117                                 Trace.TraceInformation("ScreenWidth: " + mo["ScreenWidth"]);
118                                 Trace.TraceInformation("ScreenHeight: " + mo["ScreenHeight"]);
119                         });
120
121                         TryPutSystemLog("Win32_SoundDevice", (mo) => {
122                                 Trace.TraceInformation("-------------------------");
123                                 Trace.TraceInformation("Audio Information:");
124                                 //Trace.TraceInformation("Caption: " + mo["Caption"]);
125                                 //Trace.TraceInformation("ProductName: " + mo["ProductName"]);
126                                 //Trace.TraceInformation("DMABufferSize: " + mo["DMABufferSize"]);
127
128                                 foreach (PropertyData property in mo.Properties)
129                                 {
130                                         Trace.TraceInformation("{0}:{1}", property.Name, property.Value);
131                                 }
132                         });
133
134                         Trace.TraceInformation("----------------------");
135                         Trace.TraceInformation("DTXMania settings:");
136                         Trace.TraceInformation("VSyncWait: " + CDTXMania.Instance.ConfigIni.bVSyncWait.ToString());
137                         Trace.TraceInformation("Fullscreen: " + CDTXMania.Instance.ConfigIni.bFullScreen.ToString());
138                         Trace.TraceInformation("----------------------");
139                 }
140         }
141 }