C++动态链接库方法调用

        //定义内存的信息结构
        [StructLayout(LayoutKind.Sequential)]
        public struct MEMORY_INFO
        {
            public uint dwLength;
            public uint dwMemoryLoad;
            public uint dwTotalPhys;
            public uint dwAvailPhys;
            public uint dwTotalPageFile;
            public uint dwAvailPageFile;
            public uint dwTotalVirtual;
            public uint dwAvailVirtual;
        }
        [DllImport("kernel32")]
        private static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);

  此方法在C#中调用时,调用之前声明的变量会被释放掉,放在其他变量使用后调用,具体原因空了找

        private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timer.Stop();
            i++;

            MEMORY_INFO MemInfo = new MEMORY_INFO();
            GlobalMemoryStatus(ref MemInfo);

            List<HardDriver> hardDrivers = new List<HardDriver>();

            DriveInfo[] drives = DriveInfo.GetDrives().Where(a => a.DriveType == DriveType.Fixed).ToArray();
            foreach (var item in drives)
            {
                hardDrivers.Add(new HardDriver()
                {
                    name = item.Name,
                    cap_all = (1.0 * item.TotalSize / 1024.0 / 1024.0 / 1024.0).ToString() + "GB",
                    cap_avi = (1.0 * item.AvailableFreeSpace / 1024.0 / 1024.0 / 1024.0).ToString() + "GB",
                });
            }

            var cpt = new ComputerLog()
            {
                server_name = server_name,
            };

            cpt.cpu = 0;
            cpt.net_in = "";
            cpt.net_out = "";
            cpt.drives = hardDrivers.ToArray();


            cpt.mem = MemInfo.dwMemoryLoad.ToString() + "%";
            cpt.mem_avi = ConvertBytes(MemInfo.dwTotalPageFile.ToString(), 3).ToString() + "GB";

            Console.Clear();
            //Console.WriteLine($"{i.ToString()} cpt.mem:{cpt.mem} cpt.mem_avi:{cpt.mem_avi}");

            Console.WriteLine(i.ToString() + "/r/n" + JsonConvert.SerializeObject(cpt));
            //Monitor.logComputer(cpt);

            timer.Start();
        }

  

猜你喜欢

转载自www.cnblogs.com/zwz418/p/10529433.html