Пример #1
0
        private static void SetEthernetInformation(StaticPerformanceData data)
        {
            data.EthernetAdapters = new List <EthernetAdapter>();
            foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
                    ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
                {
                    var ipProperties = ni.GetIPProperties();

                    var adapter = new EthernetAdapter
                    {
                        AdapterName    = ni.Name,
                        Description    = ni.Description,
                        ConnectionType = ni.NetworkInterfaceType.ToString(),
                        DnsName        = ipProperties.DnsSuffix
                    };

                    foreach (var ip in ipProperties.UnicastAddresses)
                    {
                        if (ip.Address.AddressFamily == AddressFamily.InterNetwork && adapter.Ipv4Address == null)
                        {
                            adapter.Ipv4Address = ip.Address.ToString();
                        }
                        else if (ip.Address.AddressFamily == AddressFamily.InterNetworkV6 && adapter.Ipv6Address == null)
                        {
                            adapter.Ipv6Address = ip.Address.ToString();
                        }
                    }
                    data.EthernetAdapters.Add(adapter);
                }
            }
        }
Пример #2
0
        public static StaticPerformanceData GetStaticPerformanceData()
        {
            var result = new StaticPerformanceData();

            SetMemoryInformation(result);
            SetProcessorInformation(result);
            SetEthernetInformation(result);

            return(result);
        }
        private void _livePerformanceCommand_StaticDataReceived(object sender, StaticPerformanceData e)
        {
            StaticPerformanceData = e;
            MaximumCpuSpeed       = (e.MaxClockSpeed * 0.001).ToString("0.00") + " GHz";
            MaxMemory             = (int)(e.TotalMemory / 1000 / 1000);

            _ethernetAdapterViewModels =
                new Dictionary <string, EthernetAdapterViewModel>(e.EthernetAdapters.ToDictionary(x => x.Description,
                                                                                                  x => new EthernetAdapterViewModel(x)));

            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
            {
                AddEthernetAdapters?.Invoke(this,
                                            e.EthernetAdapters.Select(x => _ethernetAdapterViewModels[x.Description]).ToList());
            }));

            CanLiveUpdate = true;
        }
Пример #4
0
        private static void SetProcessorInformation(StaticPerformanceData data)
        {
            using (var managementClass = new ManagementClass("Win32_Processor"))
            {
                var procs = managementClass.GetInstances();

                var item = procs.OfType <ManagementObject>().FirstOrDefault();
                if (item != null)
                {
                    data.MaxClockSpeed     = item.TryGetProperty <uint>("MaxClockSpeed");
                    data.ProcessorName     = item.TryGetProperty <string>("Name");
                    data.Cores             = item.TryGetProperty <uint>("NumberOfCores");
                    data.LogicalProcessors = item.TryGetProperty <uint>("NumberOfLogicalProcessors");

                    if (CoreHelper.RunningOnVistaOrGreater)
                    {
                        using (var cacheClass = new ManagementClass("Win32_CacheMemory"))
                            data.L1Cache =
                                (uint)
                                cacheClass.GetInstances()
                                .OfType <ManagementObject>()
                                .Where(x => x.TryGetProperty <ushort>("Level") == 4)
                                .Sum(x => x.TryGetProperty <uint>("MaxCacheSize"));
                        data.L2Cache = item.TryGetProperty <uint>("L2CacheSize");
                        data.L3Cache = item.TryGetProperty <uint>("L3CacheSize");
                    }
                }
                else
                {
                    data.MaxClockSpeed     = 0;
                    data.ProcessorName     = "N/A";
                    data.Cores             = 0;
                    data.LogicalProcessors = 0;
                    data.L1Cache           = 0;
                    data.L2Cache           = 0;
                    data.L3Cache           = 0;
                }
            }
        }
Пример #5
0
        private static void SetMemoryInformation(StaticPerformanceData data)
        {
            using (var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PhysicalMemory"))
            {
                var procs = searcher.Get();

                var slotsSpeed =
                    procs.OfType <ManagementObject>()
                    .Select(managementObject => managementObject?["Speed"])
                    .Where(speed => speed != null)
                    .Cast <uint>()
                    .ToList();

                if (slotsSpeed.Count > 0)
                {
                    data.MemorySpeed = slotsSpeed.OrderBy(x => x).First();
                }

                data.UsedMemorySlots = procs.Count;

                var memStatus = new MEMORYSTATUSEX();
                if (NativeMethods.GlobalMemoryStatusEx(memStatus))
                {
                    data.TotalMemory = memStatus.ullTotalPhys;
                }
            }

            using (var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PhysicalMemoryArray")
                   )
            {
                var procs = searcher.Get();

                var item = procs.OfType <ManagementObject>().FirstOrDefault();
                if (item != null)
                {
                    data.TotalMemorySlots = (ushort)item["MemoryDevices"];
                }
            }
        }