C#获取硬盘编号、CPU编号及类型、内存大小及使用情况

本文介绍了如何利用C#获取系统硬件信息,包括CPU编号、内存大小及使用情况以及硬盘编号。通过定义并使用结构体(如CpuInfo、MemoryInfo)以及DllImport调用系统API,可以获取到详细的数据。示例代码展示了如何在WinForm或Web应用中获取这些信息。
摘要由CSDN通过智能技术生成

如何利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见:

首先需要定义几个结构(struct) ,便于DllImport作为返回参数调用。以下是代码:
CpuInfo.cs

using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
* 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
* LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
* LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
*/

/** <summary>
/// 定义CPU的信息结构
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct CpuInfo
...{
        /** <summary>
        /// OEM ID
        /// </summary>
        public uint dwOemId;
        /** <summary>
        /// 页面大小
        /// </summary>
        public uint dwPageSize;
        public uint lpMinimumApplicationAddress;
        public uint lpMaximumApplicationAddress;
        public uint dwActiveProcessorMask;
        /** <summary>
        /// CPU个数
        /// </summary>
        public uint dwNumberOfProcessors;
        /** <summary>
        /// CPU类型
        /// </summary>
        public uint dwProcessorType;
        public uint dwAllocationGranularity;
        /** <summary>
        /// CPU等级
        /// </summary>
        public uint dwProcessorLevel;
        public uint dwProcessorRevision;
}
MemoryInfo.cs
using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
* 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
* LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
* LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
*/
/** <summary>
/// 定义内存的信息结构
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct MemoryInfo
...{
        /** <summary>
        ///
        /// </summary>
        public uint dwLength;
        /** <summary>
        /// 已经使用的内存
        /// </summary>
        public uint dwMemoryLoad;
        /** <summary>
        /// 总物理内存大小
        /// </summary>
        public uint dwTotalPhys;
        /** <summary>
        /// 可用物理内存大小
        /// </summary>
        public uint dwAvailPhys;
        /** <summary>
        /// 交换文件总大小
        /// </summary>
        public uint dwTotalPageFile;
        /** <summary>
        /// 可用交换文件大小
        /// </summary>
        public uint dwAvailPageFile;
        /** &

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值