資源簡介
//調用方法:搜索所有USB設備..
USB.WhoUsbDevice(0, 0, Guid.Empty);
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Management;
using?System.Text.Regularexpressions;
using?System.Windows.Forms;
namespace?test
{
????///?
????///?即插即用設備信息結構
????///?
?????
????public?struct?PnPEntityInfo
????{
????????public?String?PNPDeviceID;??????//?設備ID
????????public?String?Name;?????????????//?設備名稱
????????public?String?Description;??????//?設備描述
????????public?String?Service;??????????//?服務
????????public?String?Status;???????????//?設備狀態
????????public?UInt16?VendorID;?????????//?供應商標識
????????public?UInt16?ProductID;????????//?產品編號?
????????public?Guid?ClassGuid;??????????//?設備安裝類GUID
????}?
????///?
????///?基于WMI獲取USB設備信息
????///?
????public?partial?class?USB
????{
????????#region?UsbDevice
????????///?
????????///?獲取所有的USB設備實體(過濾沒有VID和PID的設備)
????????///?
????????public?static?PnPEntityInfo[]?AllUsbDevices
????????{
????????????get
????????????{
????????????????return?WhoUsbDevice(UInt16.MinValue?UInt16.MinValue?Guid.Empty);
????????????}
????????}
????????///?
????????///?查詢USB設備實體(設備要求有VID和PID)
????????///?
????????///?供應商標識,MinValue忽視
????????///?產品編號,MinValue忽視
????????///?設備安裝類Guid,Empty忽視
????????///?設備列表
????????public?static??int?numb;//統計usb設備數量??????????
????????public?static?PnPEntityInfo[]?WhoUsbDevice(UInt16?VendorID?UInt16?ProductID?Guid?ClassGuid)
????????{
????????????numb?=?0;
????????????List?UsbDevices?=?new?List();
????????????//?獲取USB控制器及其相關聯的設備實體
????????????ManagementobjectCollection?USBControllerDeviceCollection?=?new?ManagementobjectSearcher(“SELECT?*?FROM?Win32_USBControllerDevice“).Get();
????????????if?(USBControllerDeviceCollection?!=?null)
????????????{
????????????????foreach?(Managementobject?USBControllerDevice?in?USBControllerDeviceCollection)
????????????????{???//?獲取設備實體的DeviceID
????????????????????String?Dependent?=?(USBControllerDevice[“Dependent“]?as?String).Split(new?Char[]?{?‘=‘?})[1];
????????????????????//?過濾掉沒有VID和PID的USB設備
????????????????????Match?match?=?Regex.Match(Dependent?“VID_[0-9|A-F]{4}&PID_[0-9|A-F]{4}“);
????????????????????if?(match.Success)
????????????????????{
????????????????????????UInt16?theVendorID?=?Convert.ToUInt16(match.Value.Substring(4?4)?16);???//?供應商標識
????????????????????????if?(VendorID?!=?UInt16.MinValue?&&?VendorID?!=?theVendorID)?continue;
????????????????????????UInt16?theProductID?=?Convert.ToUInt16(match.Value.Substring(13?4)?16);?//?產品編號
????????????????????????if?(ProductID?!=?UInt16.MinValue?&&?ProductID?!=?theProductID)?continue;
????????????????????????ManagementobjectCollection?PnPEntityCollection?=?new?ManagementobjectSearcher(“SELECT?*?FROM?Win32_PnPEntity?WHERE?DeviceID=“?+?Depend
評論
共有 條評論