C#:USB设备枚举(二)设备枚举API
/* ----------------------------------------------------------
文件名称:WDKUsbEnum.cs
作者:秦建辉
MSN:splashcn@msn.com
QQ:36748897
博客:http://blog.csdn.net/jhqin
开发环境:
Visual Studio V2010
.NET Framework 4 Client Profile
版本历史:
V1.0 2011年10月10日
基于WDK枚举USB设备
------------------------------------------------------------ */
using System;
using System.Collections.Generic;
using System.Management;
using System.Runtime.InteropServices;
using System.Text;
namespace Splash.IO.PORTS
{
/// <summary>
/// USB主控制器信息
/// </summary>
public struct HostControllerInfo
{
public String PNPDeviceID; // 设备ID
public String Name; // 设备名称
}
/// <summary>
/// USB Hub信息
/// </summary>
public struct UsbHubInfo
{
public String PNPDeviceID; // 设备ID
public String Name; // 设备名称
public String Status; // 设备状态
}
/// <summary>
/// USB HUB节点信息
/// </summary>
public struct UsbNodeInformation
{
public String DevicePath; // 设备路径
public String PNPDeviceID; // 设备ID
public String Name; // 设备名称
public USB_HUB_NODE NodeType; // 节点类型
// USB_HUB_INFORMATION
public Boolean HubIsBusPowered; // 供电方式:true-总线供电false-独立供电
public Int32 NumberOfPorts; // 端口数
public Int16 HubCharacteristics; // 特征描述
public Byte PowerOnToPowerGood; // 从端口加电到端口正常工作的时间间隔(以2ms为单位)
public Byte HubControlCurrent; // 设备所需最大电流
// USB_MI_PARENT_INFORMATION
public Int32 NumberOfInterfaces; // 接口数
}
/// <summary>
/// USB设备描述符
/// </summary>
public struct UsbDeviceDescriptor
{
public Byte bDescriptorType; // 描述符类型USB_DEVICE_DESCRIPTOR_TYPE
public String UsbVersion; // USB规格版本号
public Byte bDeviceClass; // 设备类型
public Byte bDeviceSubClass; // 设备子类型
public Byte bDeviceProtocol; // 设备协议
public Byte bMaxPacketSize0; // 最大封包大小
public UInt16 idVendor; // VID
public UInt16 idProduct; // PID
public String DeviceVersion; // 设备版本号
public String Manufacturer; // 制造商
public String Product; // 产品描述
public String SerialNumber; // 序列号
public Byte bNumConfigurations; // 配置总数
}
/// <summary>
/// USB管道信息
/// </summary>
public struct UsbPipeInfo
{
public UInt32 ScheduleOffset;
public Byte bDescriptorType;
public Byte bEndpointAddress;
public Byte bmAttributes;
public UInt16 wMaxPacketSize;
public Byte bInterval;
}
/// <summary>
/// USB节点连接信息
/// </summary>
public struct UsbNodeConnectionInformation
{
public String DevicePath; // 设备路径
public Int32 ConnectionIndex; // 端口号
public UsbDeviceDescriptor DeviceDescriptor;
public Byte CurrentConfigurationValue; // 当
补充:软件开发 , C# ,