C#通过WMI获取USB设备信息教程
1星 123 浏览量
更新于2024-08-31
收藏 58KB PDF 举报
"C#通过WMI获取USB设备信息的代码示例"
在Windows操作系统中,管理系统硬件信息和事件的一种常用方法是使用Windows Management Instrumentation(WMI)。C#程序员可以利用.NET Framework提供的ManagementObjectSearcher类来通过WMI查询USB设备的相关信息。本示例详细阐述了如何在C#中使用WMI来获取USB设备的详细数据。
首先,我们需要导入必要的命名空间,包括`System`, `System.Management`, `System.Text.RegularExpressions`和`System.Collections.Generic`。这些命名空间分别提供了基本的数据类型、管理对象操作、正则表达式处理和集合操作等功能。
定义一个名为`PnPEntityInfo`的结构体,用于存储USB设备的基本信息,如设备ID(PNPDeviceID)、设备名称(Name)、设备描述(Description)、服务(Service)、设备状态(Status)、供应商标识(VendorID)、产品编号(ProductID)以及设备安装类GUID(ClassGuid)。
接着,创建一个名为`USB`的类,它包含了获取USB设备信息的方法。在这个类中,有两个主要的方法:
1. `AllUsbDevices`属性:这个静态方法返回所有USB设备的信息。它通过调用`WhoUsbDevice`方法,传递最小值(`UInt16.MinValue`)作为VendorID和ProductID的参数,表示查询所有USB设备,而不论其供应商标识和产品编号。
2. `WhoUsbDevice`方法:这是一个重载方法,接受VendorID、ProductID和ClassGuid作为参数。它可以根据指定条件筛选USB设备,返回符合特定条件的USB设备信息数组。如果VendorID或ProductID为`UInt16.MinValue`,则不进行相应筛选;如果ClassGuid为空(`Guid.Empty`),则忽略设备安装类的筛选。
在`WhoUsbDevice`方法中,主要步骤包括:
- 创建一个ManagementObjectSearcher对象,设置其查询范围为WMI的Win32_PnPEntity类,这是包含所有即插即用设备信息的类。
- 使用一个ManagementObjectCollection对象来存储查询结果。
- 遍历查询结果,对每个设备进行处理:
- 检查设备是否为USB设备,这通常通过检查设备的ClassGuid是否与USB设备的ClassGuid匹配来实现。
- 如果设备是USB设备并且满足VendorID和ProductID的条件,就创建一个`PnPEntityInfo`实例,并填充相关信息。
- 最后,将所有符合条件的设备信息添加到一个`PnPEntityInfo`数组中并返回。
这个示例代码不仅可以帮助开发者获取USB设备的基本信息,还可以作为查询其他类型设备信息的基础,只需调整查询条件和筛选逻辑即可。在实际项目中,这样的功能可能被用于设备监控、设备管理和日志记录等场景。
123 浏览量
602 浏览量
209 浏览量
111 浏览量
2020-06-06 上传
2022-09-24 上传
212 浏览量
878 浏览量
weixin_38733875
- 粉丝: 7
- 资源: 976
最新资源
- witx-codegen:用于AssemblyScript,Zig等的WITX代码和文档生成器
- ml-toolkit-deployments:OCP上的KubeFlow和ODH变体的文档过程
- Daily-Challenges:每日编程器
- 基于SSM的果蔬商城系统论文+项目导入演示+源码
- Gmail-autocomplete:一个 chrome 扩展,可以在输入您自己的电子邮件 ID 时自动完成 gmail 电子邮件正文和主题。 如果您经常发送类似格式的邮件(例如每日状态报告),这会很有用
- ApplicationInsights-Python:适用于Python的Application Insights SDK
- Classifikation_regularization
- Bonn Open Synthesis System (BOSS)-开源
- adf管道触发
- epg
- associateFiles_matlab_associateFiles_
- icingaweb2-module-grafana:用于Icinga Web 2的Grafana模块(支持InfluxDB和Graphite)
- svm+tdm_gcc.zip
- MakeBSSGreatAgain-Auth-API:MakeBSSGreatAgain项目的身份验证API
- 3d-convex-hulls:使用 OpenCL 对 3D 凸包的极简分治算法进行自下而上的适配
- QMtrim:AviSynth的简单量化运动Trim()生成器-开源