UVC红外(IR)摄像头实例分析
+ -

UVC红外相机MS OS 2.0平台描述符

2023-03-02 171 0

前一节在获取了BOS描述符之后,从其解析出平台描述符,故需要对主机发起厂商控制请求来获取 MS OS 2.0 描述符。
MS OS 2.0 描述符集我括的内容如下:

  1. 设置标头
  2. 配置子集标头
  3. 颜色相机函数子集标头
  4. 传感器组 ID 的注册表值功能描述符
  5. 传感器组名称的注册表值功能描述符
  6. 用于启用静止映像捕获的注册表值功能描述符
  7. 用于启用平台 DMFT 的注册表值功能描述符
  8. IR 相机函数子集标头
  9. 传感器组 ID 的注册表值功能描述符
  10. 传感器组名称的注册表值功能描述符
  11. 用于将相机注册为传感器相机的注册表值功能描述符

固件将为供应商请求提供处理程序,该请求将返回本部分开头所述的虚构设备的以下 MS OS 2.0 描述符。

UCHAR USBVideoMSOS20DescriptorSet[0x2C8] =
{
    /* Microsoft OS 2.0 Descriptor Set Header */
    0x0A, 0x00,             // wLength of MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00,             // wDescriptorType == MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00, 0x00, 0x0A, // dwWindowsVersion – 0x10000000 for Windows 10
    0xC8, 0x02,             // wTotalLength - Total length 0x2C8 (712)

    /* Microsoft OS 2.0 Configuration Subset Header */
    0x08, 0x00,             // wLength of MSOS20_SUBSET_HEADER_CONFIGURATION
    0x01, 0x00,             // wDescriptorType == MSOS20_SUBSET_HEADER_CONFIGURATION
    0x00,                   // bConfigurationValue set to the first configuration
    0x00,                   // bReserved set to 0.
    0xBE, 0x02,             // wTotalLength - Total length 0x2BE (702)

    /****************Color Camera Function******************/

    /* Microsoft OS 2.0 Function Subset Header */
    0x08, 0x00,             // wLength of MSOS20_SUBSET_HEADER_FUNCTION
    0x02, 0x00,             // wDescriptorType == MSOS20_SUBSET_HEADER_FUNCTION
    0x00,                   // bFirstInterface field of the first IAD
    0x00,                   // bReserved set to 0.
    0x6E, 0x01,             // wSubsetLength - Length 0x16E (366)

    /****************Register the Color Camera in a sensor group******************/

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x80, 0x00,             // wLength 0x80 (128) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x01, 0x00,             // wPropertyDataType - REG_SZ
    0x28, 0x00,             // wPropertyNameLength – 0x28 (40) bytes
    'U', 0x00, 'V', 0x00,   // Property Name - "UVC-FSSensorGroupID"
    'C', 0x00, '-', 0x00,
    'F', 0x00, 'S', 0x00,
    'S', 0x00, 'e', 0x00,
    'n', 0x00, 's', 0x00,
    'o', 0x00, 'r', 0x00,
    'G', 0x00, 'r', 0x00,
    'o', 0x00, 'u', 0x00,
    'p', 0x00, 'I', 0x00,
    'D', 0x00, 0x00, 0x00,
    0x4E, 0x00,             // wPropertyDataLength – 0x4E (78) bytes
                            // FSSensorGroupID GUID in string format:
                            // "{20C94C5C-F402-4F1F-B324-0C1CF0257870}"
    '{', 0x00, '2', 0x00,   // This is just an example GUID.
    '0', 0x00, 'C', 0x00,   // You need to generate and use your
    '9', 0x00, '4', 0x00,   // own GUID for the sensor group ID
    'C', 0x00, '5', 0x00,
    'C', 0x00, '-', 0x00,
    'F', 0x00, '4', 0x00,
    '0', 0x00, '2', 0x00,
    '-', 0x00, '4', 0x00,
    'F', 0x00, '1', 0x00,
    'F', 0x00, '-', 0x00,
    'B', 0x00, '3', 0x00,
    '2', 0x00, '4', 0x00,
    '-', 0x00, '0', 0x00,
    'C', 0x00, '1', 0x00,
    'C', 0x00, 'F', 0x00,
    '0', 0x00, '2', 0x00,
    '5', 0x00, '7', 0x00,
    '8', 0x00, '7', 0x00,
    '0', 0x00, '}', 0x00,
    0x00, 0x00,

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x56, 0x00,             // wLength 0x56 (86) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x01, 0x00,             // wPropertyDataType - REG_SZ
    0x2C, 0x00,             // wPropertyNameLength – 0x2C (44) bytes
    'U', 0x00, 'V', 0x00,   // Property Name - "UVC-FSSensorGroupName"
    'C', 0x00, '-', 0x00,
    'F', 0x00, 'S', 0x00,
    'S', 0x00, 'e', 0x00,
    'n', 0x00, 's', 0x00,
    'o', 0x00, 'r', 0x00,
    'G', 0x00, 'r', 0x00,
    'o', 0x00, 'u', 0x00,
    'p', 0x00, 'N', 0x00,
    'a', 0x00, 'm', 0x00,
    'e', 0x00, 0x00, 0x00,
    0x20, 0x00,             // wPropertyDataLength – 0x20 (32) bytes
                            // FSSensorGroupName "YourCameraGroup"
    'Y', 0x00, 'o', 0x00,
    'u', 0x00, 'r', 0x00,
    'C', 0x00, 'a', 0x00,
    'm', 0x00, 'e', 0x00,
    'r', 0x00, 'a', 0x00,
    'G', 0x00, 'r', 0x00,
    'o', 0x00, 'u', 0x00,
    'p', 0x00, 0x00, 0x00,

    /****************Enable Still Image Capture for Color Camera************/

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x54, 0x00,             // wLength 0x54 (84) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x04, 0x00,             // wPropertyDataType - REG_DWORD
    0x46, 0x00,             // wPropertyNameLength – 0x46 (70) bytes
    'U', 0x00, 'V', 0x00,   // Property Name - "UVC-EnableDependentStillPinCapture"
    'C', 0x00, '-', 0x00,
    'E', 0x00, 'n', 0x00,
    'a', 0x00, 'b', 0x00,
    'l', 0x00, 'e', 0x00,
    'D', 0x00, 'e', 0x00,
    'p', 0x00, 'e', 0x00,
    'n', 0x00, 'd', 0x00,
    'e', 0x00, 'n', 0x00,
    't', 0x00, 'S', 0x00,
    't', 0x00, 'i', 0x00,
    'l', 0x00, 'l', 0x00,
    'P', 0x00, 'i', 0x00,
    'n', 0x00, 'C', 0x00,
    'a', 0x00, 'p', 0x00,
    't', 0x00, 'u', 0x00,
    'r', 0x00, 'e', 0x00,
    0x00, 0x00,
    0x04, 0x00,              // wPropertyDataLength – 4 bytes
    0x01, 0x00, 0x00, 0x00,   // Enable still pin capture using Method 2 or Method 3

    /****************Enable Platform DMFT for ROI-capable USB Camera************/

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x3C, 0x00,             // wLength 0x3C (60) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x04, 0x00,             // wPropertyDataType - REG_DWORD
    0x2E, 0x00,             // wPropertyNameLength – 0x2E (46) bytes
    'U', 0x00, 'V', 0x00,   // Property Name - "UVC-EnablePlatformDmft"
    'C', 0x00, '-', 0x00,
    'E', 0x00, 'n', 0x00,
    'a', 0x00, 'b', 0x00,
    'l', 0x00, 'e', 0x00,
    'P', 0x00, 'l', 0x00,
    'a', 0x00, 't', 0x00,
    'f', 0x00, 'o', 0x00,
    'r', 0x00, 'm', 0x00,
    'D', 0x00, 'm', 0x00,
    'f', 0x00, 't', 0x00,
    0x00, 0x00,
    0x04, 0x00,              // wPropertyDataLength – 4 bytes
    0x01, 0x00, 0x00, 0x00,  // Enable Platform DMFT

    /****************IR Camera Function*********************************************/

    /* Microsoft OS 2.0 Function Subset Header */
    0x08, 0x00,             // wLength of MSOS20_SUBSET_HEADER_FUNCTION
    0x02, 0x00,             // wDescriptorType == MSOS20_SUBSET_HEADER_FUNCTION
    0x01,                   // bFirstInterface set of the second function
    0x00,                   // bReserved set to 0.
    0x48, 0x01,             // wSubsetLength - Length 0x148 (328)

    /********Register the IR Camera to the same sensor group as the Color Camera*****/

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x80, 0x00,             // wLength 0x80 (128) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x01, 0x00,             // wPropertyDataType - REG_SZ
    0x28, 0x00,             // wPropertyNameLength – 0x28 (40) bytes
    'U', 0x00, 'V', 0x00,   // Property Name - "UVC-FSSensorGroupID"
    'C', 0x00, '-', 0x00,
    'F', 0x00, 'S', 0x00,
    'S', 0x00, 'e', 0x00,
    'n', 0x00, 's', 0x00,
    'o', 0x00, 'r', 0x00,
    'G', 0x00, 'r', 0x00,
    'o', 0x00, 'u', 0x00,
    'p', 0x00, 'I', 0x00,
    'D', 0x00, 0x00, 0x00,
    0x4E, 0x00,             // wPropertyDataLength – 78 bytes
                            // FSSensorGroupID GUID in string format:
                            // "{20C94C5C-F402-4F1F-B324-0C1CF0257870}"
    '{', 0x00, '2', 0x00,
    '0', 0x00, 'C', 0x00,
    '9', 0x00, '4', 0x00,
    'C', 0x00, '5', 0x00,
    'C', 0x00, '-', 0x00,
    'F', 0x00, '4', 0x00,
    '0', 0x00, '2', 0x00,
    '-', 0x00, '4', 0x00,
    'F', 0x00, '1', 0x00,
    'F', 0x00, '-', 0x00,
    'B', 0x00, '3', 0x00,
    '2', 0x00, '4', 0x00,
    '-', 0x00, '0', 0x00,
    'C', 0x00, '1', 0x00,
    'C', 0x00, 'F', 0x00,
    '0', 0x00, '2', 0x00,
    '5', 0x00, '7', 0x00,
    '8', 0x00, '7', 0x00,
    '0', 0x00, '}', 0x00,
    0x00, 0x00,

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x56, 0x00,             // wLength 0x56 (86) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x01, 0x00,             // wPropertyDataType - REG_SZ
    0x2C, 0x00,             // wPropertyNameLength – 0x2C (44) bytes
    'U', 0x00, 'V', 0x00,   // Property Name - "UVC-FSSensorGroupName"
    'C', 0x00, '-', 0x00,
    'F', 0x00, 'S', 0x00,
    'S', 0x00, 'e', 0x00,
    'n', 0x00, 's', 0x00,
    'o', 0x00, 'r', 0x00,
    'G', 0x00, 'r', 0x00,
    'o', 0x00, 'u', 0x00,
    'p', 0x00, 'N', 0x00,
    'a', 0x00, 'm', 0x00,
    'e', 0x00, 0x00, 0x00,
    0x20, 0x00,             // wPropertyDataLength – 32 bytes
                            // FSSensorGroupName "YourCameraGroup"
    'Y', 0x00, 'o', 0x00,
    'u', 0x00, 'r', 0x00,
    'C', 0x00, 'a', 0x00,
    'm', 0x00, 'e', 0x00,
    'r', 0x00, 'a', 0x00,
    'G', 0x00, 'r', 0x00,
    'o', 0x00, 'u', 0x00,
    'p', 0x00, 0x00, 0x00,

    /****************Make IR camera visible to applications*********************/

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x30, 0x00,             // wLength 0x30 (48) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x04, 0x00,             // wPropertyDataType - REG_DWORD
    0x22, 0x00,             // wPropertyNameLength – 0x22 (34) bytes
    'S', 0x00, 'e', 0x00,
    'n', 0x00, 's', 0x00,
    'o', 0x00, 'r', 0x00,
    'C', 0x00, 'a', 0x00,
    'm', 0x00, 'e', 0x00,
    'r', 0x00, 'a', 0x00,
    'M', 0x00, 'o', 0x00,
    'd', 0x00, 'e', 0x00,
    0x00, 0x00,
    0x04, 0x00,              // wPropertyDataLength – 4 bytes
    0x01, 0x00, 0x00, 0x00, // This exposes the camera to OS as an IR only camera
                            // i.e. KSCATEGORY_SENSOR_CAMERA

    /* Microsoft OS 2.0 Registry Value Feature Descriptor */
    0x3A, 0x00,             // wLength 0x3A (58) in bytes of this descriptor
    0x04, 0x00,             // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x04, 0x00,             // wPropertyDataType - REG_DWORD
    0x2C, 0x00,             // wPropertyNameLength – 0x2C (44) bytes
    'S', 0x00, 'k', 0x00,
    'i', 0x00, 'p', 0x00,
    'C', 0x00, 'a', 0x00,
    'm', 0x00, 'e', 0x00,
    'r', 0x00, 'a', 0x00,
    'E', 0x00, 'n', 0x00,
    'u', 0x00, 'm', 0x00,
    'e', 0x00, 'r', 0x00,
    'a', 0x00, 't', 0x00,
    'i', 0x00, 'o', 0x00,
    'n', 0x00, 0x00, 0x00,
    0x04, 0x00,             // wPropertyDataLength – 4 bytes
    0x01, 0x00, 0x00, 0x00  // This exposes the camera to applications looking for IR only cameras
};

不过我们通过USB总线分析仪抓到的数据这微软提供的示例有稍许区别:

0A 00 00 00 00 00 00 0A A0 03 08 00 01 00 00 00 96 03 08 00 02 00 00 00 BC 01 80 00 04 00 01 00 
28 00 55 00 56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 47 00 72 00 6F 00 
75 00 70 00 49 00 44 00 00 00 4E 00 7B 00 37 00 38 00 44 00 43 00 42 00 37 00 44 00 30 00 2D 00 
33 00 33 00 45 00 41 00 2D 00 34 00 35 00 38 00 42 00 2D 00 42 00 39 00 38 00 41 00 2D 00 35 00 
36 00 45 00 39 00 41 00 33 00 41 00 34 00 30 00 42 00 35 00 30 00 7D 00 00 00 66 00 04 00 01 00 
2C 00 55 00 56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 47 00 72 00 6F 00 
75 00 70 00 4E 00 61 00 6D 00 65 00 00 00 30 00 52 00 74 00 73 00 2D 00 44 00 4D 00 46 00 54 00 
2D 00 47 00 72 00 6F 00 75 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
54 00 04 00 04 00 46 00 55 00 56 00 43 00 2D 00 45 00 6E 00 61 00 62 00 6C 00 65 00 44 00 65 00 
70 00 65 00 6E 00 64 00 65 00 6E 00 74 00 53 00 74 00 69 00 6C 00 6C 00 50 00 69 00 6E 00 43 00 
61 00 70 00 74 00 75 00 72 00 65 00 00 00 04 00 01 00 00 00 3C 00 04 00 04 00 2E 00 55 00 56 00 
43 00 2D 00 45 00 6E 00 61 00 62 00 6C 00 65 00 50 00 6C 00 61 00 74 00 66 00 6F 00 72 00 6D 00 
44 00 6D 00 66 00 74 00 00 00 04 00 01 00 00 00 3E 00 04 00 04 00 30 00 45 00 6E 00 61 00 62 00 
6C 00 65 00 44 00 73 00 68 00 6F 00 77 00 52 00 65 00 64 00 69 00 72 00 65 00 63 00 74 00 69 00 
6F 00 6E 00 00 00 00 00 04 00 00 00 00 00 08 00 02 00 02 00 D2 01 80 00 04 00 01 00 28 00 55 00 
56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 47 00 72 00 6F 00 75 00 70 00 
49 00 44 00 00 00 4E 00 7B 00 37 00 38 00 44 00 43 00 42 00 37 00 44 00 30 00 2D 00 33 00 33 00 
45 00 41 00 2D 00 34 00 35 00 38 00 42 00 2D 00 42 00 39 00 38 00 41 00 2D 00 35 00 36 00 45 00 
39 00 41 00 33 00 41 00 34 00 30 00 42 00 35 00 30 00 7D 00 00 00 66 00 04 00 01 00 2C 00 55 00 
56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 47 00 72 00 6F 00 75 00 70 00 
4E 00 61 00 6D 00 65 00 00 00 30 00 52 00 74 00 73 00 2D 00 44 00 4D 00 46 00 54 00 2D 00 47 00 
72 00 6F 00 75 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 00 04 00 
04 00 22 00 53 00 65 00 6E 00 73 00 6F 00 72 00 43 00 61 00 6D 00 65 00 72 00 61 00 4D 00 6F 00 
64 00 65 00 00 00 04 00 01 00 00 00 3A 00 04 00 04 00 2C 00 53 00 6B 00 69 00 70 00 43 00 61 00 
6D 00 65 00 72 00 61 00 45 00 6E 00 75 00 6D 00 65 00 72 00 61 00 74 00 69 00 6F 00 6E 00 00 00 
04 00 01 00 00 00 3C 00 04 00 04 00 2E 00 55 00 56 00 43 00 2D 00 45 00 6E 00 61 00 62 00 6C 00 
65 00 50 00 6C 00 61 00 74 00 66 00 6F 00 72 00 6D 00 44 00 6D 00 66 00 74 00 00 00 04 00 01 00 
00 00 3E 00 04 00 04 00 30 00 45 00 6E 00 61 00 62 00 6C 00 65 00 44 00 73 00 68 00 6F 00 77 00 
52 00 65 00 64 00 69 00 72 00 65 00 63 00 74 00 69 00 6F 00 6E 00 00 00 00 00 04 00 00 00 00 00

其实对照微软提供的示例,这也只是以宽字符串的形式返回需要在注册表中写入的信息。所以这也从侧面验证了可以通过驱动的INF文件中来指定这些信息。

我们对上面的数据进行整理,大概如下:


//Microsoft OS 2.0 Descriptor Set Header
0A 00   // wLength of MSOS20_SET_HEADER_DESCRIPTOR
00 00  // wDescriptorType == MSOS20_SET_HEADER_DESCRIPTOR
00 00 00 0A  // dwWindowsVersion – 0x10000000 for Windows 10
A0 03  // wTotalLength - Total length

/****************Color Camera Function******************/
//Microsoft OS 2.0 Configuration Subset Header
08 00 // wLength of MSOS20_SUBSET_HEADER_FUNCTION
01 00   // wDescriptorType == MSOS20_SUBSET_HEADER_CONFIGURATION
00   // bConfigurationValue set to the first configuration
00   // bReserved set to 0
96 03   // wTotalLength - Total length

//Microsoft OS 2.0 Function Subset Header
08 00  // wLength of MSOS20_SUBSET_HEADER_FUNCTION
02 00  // wDescriptorType == MSOS20_SUBSET_HEADER_FUNCTION
00  // bFirstInterface field of the first IAD
00  // bReserved set to 0.
BC 01 // wSubsetLength -

//Microsoft OS 2.0 Registry Value Feature Descriptor
80 00  // wLength 0x80 (128) in bytes of this descriptor
04 00  // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
01 00   // wPropertyDataType - REG_SZ
28 00  // wPropertyNameLength
55 00 56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 
47 00 72 00 6F 00 75 00 70 00 49 00 44 00 00 00 4E 00 7B 00 37 00 38 00 44 00 43 00 42 00 37 00 
44 00 30 00 2D 00 33 00 33 00 45 00 41 00 2D 00 34 00 35 00 38 00 42 00 2D 00 42 00 39 00 38 00 
41 00 2D 00 35 00 36 00 45 00 39 00 41 00 33 00 41 00 34 00 30 00 42 00 35 00 30 00 7D 00 00 00 

UVC-FSSensorGroupId = {78DCB7D0-33EA-458B-BB98A-56E9A3A40B50}

//Microsoft OS 2.0 Registry Value Feature Descriptor
66 00   // wLength in bytes of this descriptor
04 00  // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
01 00  // wPropertyDataType - REG_SZ
2C 00  // wPropertyNameLength 
55 00 56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 47 00 72 00 6F 00 
75 00 70 00 4E 00 61 00 6D 00 65 00 00 00 30 00 52 00 74 00 73 00 2D 00 44 00 4D 00 46 00 54 00 
2D 00 47 00 72 00 6F 00 75 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

UVC-FSSensorGroupName = Rts-DMFT-Group

//Microsoft OS 2.0 Registry Value Feature Descriptor
54 00  // wLength 0x54 (84) in bytes of this descriptor
04 00   // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
04 00   // wPropertyDataType - REG_DWORD
46 00   // wPropertyNameLength
55 00 56 00 43 00 2D 00 45 00 6E 00 61 00 62 00 6C 00 65 00 44 00 65 00 70 00 65 00 
6E 00 64 00 65 00 6E 00 74 00 53 00 74 00 69 00 6C 00 6C 00 50 00 69 00 6E 00 43 00 61 00 70 00 
74 00 75 00 72 00 65 00 00 00 04 00 01 00 00 00 

UVC-EnableDependentStillPinCapture


//Microsoft OS 2.0 Registry Value Feature Descriptor
3C 00 
04 00 
04 00 
2E 00 
55 00 
56 00 
43 00 2D 00 45 00 6E 00 61 00 62 00 6C 00 65 00 50 00 6C 00 61 00 74 00 66 00 6F 00 72 00 6D 00 
44 00 6D 00 66 00 74 00 00 00 04 00 01 00 00 00 

//Microsoft OS 2.0 Registry Value Feature Descriptor
3E 00 04 00 04 00 30 00 45 00 6E 00 61 00 
62 00 6C 00 65 00 44 00 73 00 68 00 6F 00 77 00 52 00 65 00 64 00 69 00 72 00 65 00 63 00 74 00 
69 00 6F 00 6E 00 00 00 00 00 04 00 00 00 00 00 

//Microsoft OS 2.0 Function Subset Header 
08 00 02 00 02 00 D2 01 

//Microsoft OS 2.0 Registry Value Feature Descriptor
80 00 04 00 01 00 28 00 55 00 56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 
47 00 72 00 6F 00 75 00 70 00 49 00 44 00 00 00 4E 00 7B 00 37 00 38 00 44 00 43 00 42 00 37 00 
44 00 30 00 2D 00 33 00 33 00 45 00 41 00 2D 00 34 00 35 00 38 00 42 00 2D 00 42 00 39 00 38 00 
41 00 2D 00 35 00 36 00 45 00 39 00 41 00 33 00 41 00 34 00 30 00 42 00 35 00 30 00 7D 00 00 00 

//Microsoft OS 2.0 Registry Value Feature Descriptor
66 00 04 00 01 00 
2C 00 55 00 56 00 43 00 2D 00 46 00 53 00 53 00 65 00 6E 00 73 00 6F 00 72 00 47 00 72 00 6F 00
75 00 70 00 4E 00 61 00 6D 00 65 00 00 00 30 00 52 00 74 00 73 00 2D 00 44 00 4D 00 46 00 54 00 
2D 00 47 00 72 00 6F 00 75 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

//Microsoft OS 2.0 Registry Value Feature Descriptor
30 00 04 00 04 00 22 00 53 00 65 00 6E 00 73 00 6F 00 72 00 43 00 61 00 6D 00 65 00 72 00 61 00 
4D 00 6F 00 64 00 65 00 00 00 04 00 01 00 00 00 

//Microsoft OS 2.0 Registry Value Feature Descriptor
3A 00 04 00 04 00 2C 00 53 00 
6B 00 69 00 70 00 43 00 61 00 6D 00 65 00 72 00 61 00 45 00 6E 00 75 00 6D 00 65 00 72 00 61 00 
74 00 69 00 6F 00 6E 00 00 00 04 00 01 00 00 00 

//Microsoft OS 2.0 Registry Value Feature Descriptor
3C 00 04 00 04 00 2E 00 55 00 56 00 
43 00 2D 00 45 00 6E 00 61 00 62 00 6C 00 65 00 50 00 6C 00 61 00 74 00 66 00 6F 00 72 00 6D 00 
44 00 6D 00 66 00 74 00 00 00 04 00 01 00 00 00 

//Microsoft OS 2.0 Registry Value Feature Descriptor
3E 00 04 00 04 00 30 00 45 00 6E 00 61 00 
62 00 6C 00 65 00 44 00 73 00 68 00 6F 00 77 00 52 00 65 00 64 00 69 00 72 00 65 00 63 00 74 00 
69 00 6F 00 6E 00 00 00 00 00 04 00 00 00 00 00
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB3.2超高速 平台描述符
平台描述符用于标识平台或操作系统定义的128位UUID值,使用该值可以标识特定平台或操作系统的唯一设备功能。平台描述符可以包含与该功能特性能力相关联的一个或多个字节的数据。平台描述符的定义如下:struct _PLATFORM_DESCRIPTOR{ BYTE bLength; ......
UVC红外相机的枚举过程及BOS数据包解析
UVC红外相机和普通的相机在枚举过程中其实并特别的区别。可能惟一的区别就是一般的普通彩色相机并没有获取到BOS描述符,而红外相机必定含有BOS描述符,并且由于BOS描述符的引入,使得基于UVC规范的基础上实现了红外相机。通过上图可以看到,除过BOS之外,其它的和普通的UVC彩色相机的枚举过程是一致的......
UVC红外相机MS OS 2.0平台描述符
前一节在获取了BOS描述符之后,从其解析出平台描述符,故需要对主机发起厂商控制请求来获取 MS OS 2.0 描述符。MS OS 2.0 描述符集我括的内容如下:设置标头配置子集标头颜色相机函数子集标头传感器组 ID 的注册表值功能描述符传感器组名称的注册表值功能描述符用于启用静止映像捕获的注册......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!