⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbdesc.h

📁 USB容量获取用DeviceIoControl得到U盘物理参数!
💻 H
字号:
/*++

版权 (c) 1997-1998 微软公司

模块名:
    USBDESC.H

摘要:
    这是在一个标准的系统首领文件中是仍然不的USB描述符的一个首领文件.

环境:
    使用模式

修改历史:
    03-06-1998 : 创建

--*/

#pragma pack(push, 1)

//*****************************************************************************
// D E F I N E S
//*****************************************************************************

#define USB_HID_DESCRIPTOR_TYPE             0x21

// 为声音的装置附录一的USB装置班级定义。声音装置班级编码

// A.2  音频接口子集码
#define USB_AUDIO_SUBCLASS_UNDEFINED        0x00
#define USB_AUDIO_SUBCLASS_AUDIOCONTROL     0x01
#define USB_AUDIO_SUBCLASS_AUDIOSTREAMING   0x02
#define USB_AUDIO_SUBCLASS_MIDISTREAMING    0x03

// A.4  声音类-特殊描述符类型
#define USB_AUDIO_CS_UNDEFINED              0x20
#define USB_AUDIO_CS_DEVICE                 0x21
#define USB_AUDIO_CS_CONFIGURATION          0x23
#define USB_AUDIO_CS_STRING                 0x24
#define USB_AUDIO_CS_INTERFACE              0x24
#define USB_AUDIO_CS_ENDPOINT               0x25

// A.5  声音类-特殊AC(音频)接口描述符图表类型
#define USB_AUDIO_AC_UNDEFINED              0x00
#define USB_AUDIO_AC_HEADER                 0x01
#define USB_AUDIO_AC_INPUT_TERMINAL         0x02
#define USB_AUDIO_AC_OUTPUT_TERMINAL        0x03
#define USB_AUDIO_AC_MIXER_UNIT             0x04
#define USB_AUDIO_AC_SELECTOR_UNIT          0x05
#define USB_AUDIO_AC_FEATURE_UNIT           0x06
#define USB_AUDIO_AC_PROCESSING_UNIT        0x07
#define USB_AUDIO_AC_EXTENSION_UNIT         0x08

// A.6  声音类-特殊AS(流动音频)接口描述符图表类型
#define USB_AUDIO_AS_UNDEFINED              0x00
#define USB_AUDIO_AS_GENERAL                0x01
#define USB_AUDIO_AS_FORMAT_TYPE            0x02
#define USB_AUDIO_AS_FORMAT_SPECIFIC        0x03

// A.7 处理单位程序类型
#define USB_AUDIO_PROCESS_UNDEFINED         0x00
#define USB_AUDIO_PROCESS_UPDOWNMIX         0x01
#define USB_AUDIO_PROCESS_DOLBYPROLOGIC     0x02
#define USB_AUDIO_PROCESS_3DSTEREOEXTENDER  0x03
#define USB_AUDIO_PROCESS_REVERBERATION     0x04
#define USB_AUDIO_PROCESS_CHORUS            0x05
#define USB_AUDIO_PROCESS_DYNRANGECOMP      0x06

//*****************************************************************************
// T Y P E D E F S
//*****************************************************************************

// HID 描述符
typedef struct _USB_HID_DESCRIPTOR
{
    UCHAR   bLength;             //长度
    UCHAR   bDescriptorType;     //描述符类型
    USHORT  bcdHID;
    UCHAR   bCountryCode;
    UCHAR   bNumDescriptors;
	//可选描述符结构体
    struct
    {
        UCHAR   bDescriptorType;   //描述符长度
        USHORT  wDescriptorLength; //描述符类型
    } OptionalDescriptors[1];
} USB_HID_DESCRIPTOR, *PUSB_HID_DESCRIPTOR;

// 终端描述符
typedef struct _USB_ENDPOINT_DESCRIPTOR2 {
    UCHAR  bLength;             // 偏移量 0, 大小 1,长度
    UCHAR  bDescriptorType;     // 偏移量 1, 大小 1,描述符类型
    UCHAR  bEndpointAddress;    // 偏移量 2, 大小 1,终端地址
    UCHAR  bmAttributes;        // 偏移量 3, 大小 1,属性
    USHORT wMaxPacketSize;      // 偏移量 4, 大小 2,信息包最大数
    USHORT wInterval;           // 偏移量 6, 大小 2,间隔
    UCHAR  bSyncAddress;        // 偏移量 8, 大小 1,同步地址
} USB_ENDPOINT_DESCRIPTOR2, *PUSB_ENDPOINT_DESCRIPTOR2;

// 接口描述符
typedef struct _USB_INTERFACE_DESCRIPTOR2 {
    UCHAR  bLength;             // 偏移量 0, 大小 1,长度
    UCHAR  bDescriptorType;     // 偏移量 1, 大小 1,描述符类型
    UCHAR  bInterfaceNumber;    // 偏移量 2, 大小 1,接口数
    UCHAR  bAlternateSetting;   // 偏移量 3, 大小 1,改变设置
    UCHAR  bNumEndpoints;       // 偏移量 4, 大小 1,终端数
    UCHAR  bInterfaceClass;     // 偏移量 5, 大小 1,接口类
    UCHAR  bInterfaceSubClass;  // 偏移量 6, 大小 1,接口子类
    UCHAR  bInterfaceProtocol;  // 偏移量 7, 大小 1,接口协议
    UCHAR  iInterface;          // 偏移量 8, 大小 1,接口
    USHORT wNumClasses;         // 偏移量 9, 大小 2,类数
} USB_INTERFACE_DESCRIPTOR2, *PUSB_INTERFACE_DESCRIPTOR2;

// USB 设备音频描述符
typedef struct _USB_AUDIO_COMMON_DESCRIPTOR {
    UCHAR  bLength;               //长度
    UCHAR  bDescriptorType;       //描述符类型
    UCHAR  bDescriptorSubtype;    //描述符图表类型
} USB_AUDIO_COMMON_DESCRIPTOR,*PUSB_AUDIO_COMMON_DESCRIPTOR;

// 4.3.2 类-特殊AC(音频控制)接口描述符
typedef struct _USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    USHORT bcdADC;
    USHORT wTotalLength;
    UCHAR  bInCollection;
    UCHAR  baInterfaceNr[1];
} USB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR,*PUSB_AUDIO_AC_INTERFACE_HEADER_DESCRIPTOR;

// 4.3.2.1 音频输入端描述符
typedef struct _USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bTerminalID;
    USHORT wTerminalType;
    UCHAR  bAssocTerminal;
    UCHAR  bNrChannels;
    USHORT wChannelConfig;
    UCHAR  iChannelNames;
    UCHAR  iTerminal;
} USB_AUDIO_INPUT_TERMINAL_DESCRIPTOR,
*PUSB_AUDIO_INPUT_TERMINAL_DESCRIPTOR;

// 4.3.2.2 音频输出端描述符
typedef struct _USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bTerminalID;
    USHORT wTerminalType;
    UCHAR  bAssocTerminal;
    UCHAR  bSoruceID;
    UCHAR  iTerminal;
} USB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR,*PUSB_AUDIO_OUTPUT_TERMINAL_DESCRIPTOR;

// 4.3.2.3 音频混合器单位描述符
//
typedef struct _USB_AUDIO_MIXER_UNIT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bUnitID;
    UCHAR  bNrInPins;
    UCHAR  baSourceID[1];
} USB_AUDIO_MIXER_UNIT_DESCRIPTOR,*PUSB_AUDIO_MIXER_UNIT_DESCRIPTOR;

// 4.3.2.4 音频选择器单位描述符
typedef struct _USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bUnitID;
    UCHAR  bNrInPins;
    UCHAR  baSourceID[1];
} USB_AUDIO_SELECTOR_UNIT_DESCRIPTOR,*PUSB_AUDIO_SELECTOR_UNIT_DESCRIPTOR;

// 4.3.2.5 音频特征单位描述符
typedef struct _USB_AUDIO_FEATURE_UNIT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bUnitID;
    UCHAR  bSourceID;
    UCHAR  bControlSize;
    UCHAR  bmaControls[1];
} USB_AUDIO_FEATURE_UNIT_DESCRIPTOR,*PUSB_AUDIO_FEATURE_UNIT_DESCRIPTOR;

// 4.3.2.6 音频处理单位描述符
typedef struct _USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bUnitID;
    USHORT wProcessType;
    UCHAR  bNrInPins;
    UCHAR  baSourceID[1];
} USB_AUDIO_PROCESSING_UNIT_DESCRIPTOR,*PUSB_AUDIO_PROCESSING_UNIT_DESCRIPTOR;

// 4.3.2.7 音频扩展单位描述符
typedef struct _USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bUnitID;
    USHORT wExtensionCode;
    UCHAR  bNrInPins;
    UCHAR  baSourceID[1];
} USB_AUDIO_EXTENSION_UNIT_DESCRIPTOR,*PUSB_AUDIO_EXTENSION_UNIT_DESCRIPTOR;

// 4.5.2 音频常规描述符
typedef struct _USB_AUDIO_GENERAL_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bTerminalLink;
    UCHAR  bDelay;
    USHORT wFormatTag;
} USB_AUDIO_GENERAL_DESCRIPTOR,*PUSB_AUDIO_GENERAL_DESCRIPTOR;

// 4.6.1.2 音频终端描述符
typedef struct _USB_AUDIO_ENDPOINT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bmAttributes;
    UCHAR  bLockDelayUnits;
    USHORT wLockDelay;
} USB_AUDIO_ENDPOINT_DESCRIPTOR,*PUSB_AUDIO_ENDPOINT_DESCRIPTOR;

// 音频普通格式描述符
typedef struct _USB_AUDIO_COMMON_FORMAT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bFormatType;
} USB_AUDIO_COMMON_FORMAT_DESCRIPTOR,*PUSB_AUDIO_COMMON_FORMAT_DESCRIPTOR;


// 2.1.5 第一类型格式类型描述符
// 2.3.1 第三类型格式类型描述符
typedef struct _USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bFormatType;
    UCHAR  bNrChannels;
    UCHAR  bSubframeSize;
    UCHAR  bBitResolution;
    UCHAR  bSamFreqType;
} USB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR,*PUSB_AUDIO_TYPE_I_OR_III_FORMAT_DESCRIPTOR;

// 2.2.6 第二类型格式类型描述符
typedef struct _USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR {
    UCHAR  bLength;
    UCHAR  bDescriptorType;
    UCHAR  bDescriptorSubtype;
    UCHAR  bFormatType;
    USHORT wMaxBitRate;
    USHORT wSamplesPerFrame;
    UCHAR  bSamFreqType;
} USB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR,*PUSB_AUDIO_TYPE_II_FORMAT_DESCRIPTOR;

#pragma pack(pop)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -