同系列文章:
功能描述:
源代码出售:
- 实现基于WDK获取网卡原生Mac地址
- 实现基于WMI获取网卡原生Mac地址、硬盘序列号、CPU ID
- 实现基于WDK获取系统所有设备的VID和PID
动态库及测试程序下载:![]()
价格:壹仟元人民币
QQ:36748897
HWiNFO CS 2014-04-07.zip
HWiNFO类公开方法
/* ----------------------------------------------------------
* 文件名称:HWiNFO.cs
*
* 作者:秦建辉
*
* QQ:36748897
*
* 博客:http://www.firstsolver.com/wordpress/
*
* 开发环境:
* Visual Studio V2013
* .NET Framework 4 Client Profile
*
* 版本历史:
* V1.0 2014年04月06日
* 实现基于WMI获取网卡原生MAC地址、硬盘序列号、CPU ID
* 实现基于WDK获取网卡原生MAC地址
* 实现结合设备安装类GUID和设备接口类GUID获取设备VIDPID
------------------------------------------------------------ */
using System;
using System.Collections.Generic;
using System.Management;
using System.Runtime.InteropServices;
using System.Text;
namespace Splash
{
[StructLayout(LayoutKind.Sequential)]
public struct T_VIDPID
{
public UInt16 VendorID; // 供应商标识
public UInt16 ProductID; // 产品编号
}
public static class HWiNFO
{
/// <summary>
/// 基于WMI获取设备属性值
/// </summary>
/// <param name="QueryIndex">要查询的属性值索引</param>
/// <returns>属性值集合</returns>
/// <remarks>
/// QueryIndex其值含义如下:
/// 0:网卡原生MAC地址(剔除虚拟网卡)
/// 1:网卡原生MAC地址(剔除虚拟网卡和USB网卡)
/// 2:硬盘序列号
/// 3:主板序列号
/// 4:CPU ID
/// 5:BIOS序列号
/// 6:主板型号
/// 7:网卡当前MAC地址(剔除虚拟网卡)
/// 8:网卡当前MAC地址(剔除虚拟网卡和USB网卡)
/// </remarks>
public static String[] WMI_DeviceQuery(Int32 QueryIndex);
/// <summary>
/// 查看系统中是否存在指定标识的硬件设备
/// </summary>
/// <param name="CPUID">处理器标识,可以为空</param>
/// <param name="HardDiskSerialNumber">硬盘序列号,可以为空</param>
/// <param name="MacAddress">网卡MAC地址(已剔除虚拟网卡和USB网卡),可以为空</param>
/// <returns>
/// true:匹配成功
/// false:匹配失败
/// </returns>
/// <remarks>
/// 说明:
/// 对设备标识不区分大小写
/// 空项不做判断,非空项必须全部满足
/// </remarks>
public static Boolean WMI_DeviceMatch(String CPUID, String HardDiskSerialNumber, String MacAddress);
/// <summary>
/// 输出硬件信息到指定INI文件
/// </summary>
/// <param name="iniFileName">要保存的ini文件名</param>
/// <returns>
/// true:成功
/// false:失败
/// </returns>
public static Boolean WMI_DeviceInfoPrint(String iniFileName);
/// <summary>
/// 结合设备安装类GUID和设备接口类GUID获取设备VIDPID
/// </summary>
/// <param name="SetupClassGuid">设备安装类GUID,Empty忽视</param>
/// <param name="InterfaceClassGuid">设备接口类GUID,Empty忽视</param>
/// <returns>设备VIDPID列表</returns>
/// <remarks>
/// 优点:直接通过设备实例ID提取VIDPID,从而无需获取设备路径来读写IO
/// </remarks>
public static T_VIDPID[] WDK_QueryVidPid(Guid SetupClassGuid, Guid InterfaceClassGuid);
/// <summary>
/// 验证设备的VIDPID
/// </summary>
/// <param name="VendorID">设备VID</param>
/// <param name="ProductID">设备PID</param>
/// <param name="SetupClassGuid">设备安装类GUID,Empty忽视</param>
/// <param name="InterfaceClassGuid">设备接口类GUID,Empty忽视</param>
/// <returns>
/// true:匹配成功
/// false:匹配失败
/// </returns>
public static Boolean WDK_VIDPIDMatch(UInt16 VendorID, UInt16 ProductID, Guid SetupClassGuid, Guid InterfaceClassGuid);
/// <summary>
/// 输出VIDPID信息到指定INI文件
/// </summary>
/// <param name="iniFileName">要保存的ini文件名</param>
/// <returns>
/// true:成功
/// false:失败
/// </returns>
public static Boolean WDK_VIDPIDPrint(String iniFileName);
/// <summary>
/// 通过WDK获取网卡原生MAC地址
/// </summary>
/// <param name="isIncludeUSB">是否包含USB网卡,默认不包含USB网卡</param>
/// <returns>获取到的网卡原生MAC地址集合</returns>
public static String[] WDK_QueryMacAddress(Boolean isIncludeUSB = false);
/// <summary>
/// 查看系统中是否存在指定标识的硬件设备
/// </summary>
/// <param name="CPUID">处理器标识,可以为空</param>
/// <param name="HardDiskSerialNumber">硬盘序列号,可以为空</param>
/// <param name="MacAddress">网卡MAC地址(已剔除虚拟网卡和USB网卡),可以为空</param>
/// <returns>
/// true:匹配成功
/// false:匹配失败
/// </returns>
/// <remarks>
/// 说明:
/// 对设备标识不区分大小写
/// 空项不做判断,非空项必须全部满足
/// </remarks>
public static Boolean WDK_DeviceMatch(String CPUID, String HardDiskSerialNumber, String MacAddress);
/// <summary>
/// 输出硬件信息到指定INI文件
/// </summary>
/// <param name="iniFileName">要保存的ini文件名</param>
/// <returns>
/// true:成功
/// false:失败
/// </returns>
public static Boolean WDK_DeviceInfoPrint(String iniFileName);
}
}
测试软件界面: