1e41f4b71Sopenharmony_ci# USB DDK 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## 概述 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci提供USB DDK接口,包括主机侧打开和关闭接口、管道同步异步读写通信、控制传输、中断传输等。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Driver.USB.Extension 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci**起始版本:** 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci10 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci## 汇总 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci### 文件 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci| 名称 | 描述 | 20e41f4b71Sopenharmony_ci| -------- | -------- | 21e41f4b71Sopenharmony_ci| [usb_ddk_api.h](usb__ddk__api_8h.md) | 声明用于主机侧访问设备的USB DDK接口。<br/>引用文件:<usb/usb_ddk_api.h> <br/>库: libusb_ndk.z.so| 22e41f4b71Sopenharmony_ci| [usb_ddk_types.h](usb__ddk__types_8h.md) | 提供USB DDK中的枚举变量、结构体定义与宏定义。<br/>引用文件:<usb/usb_ddk_types.h> <br/>库: libusb_ndk.z.so| 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci### 结构体 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci| 名称 | 描述 | 28e41f4b71Sopenharmony_ci| -------- | -------- | 29e41f4b71Sopenharmony_ci| [UsbControlRequestSetup](_usb_control_request_setup.md) | 控制传输setup包,对应USB协议中的Setup Data。 | 30e41f4b71Sopenharmony_ci| [UsbDeviceDescriptor](_usb_device_descriptor.md) | 标准设备描述符,对应USB协议中Standard Device Descriptor。 | 31e41f4b71Sopenharmony_ci| [UsbConfigDescriptor](_usb_config_descriptor.md) | 标准配置描述符,对应USB协议中Standard Configuration Descriptor。 | 32e41f4b71Sopenharmony_ci| [UsbInterfaceDescriptor](_usb_interface_descriptor.md) | 标准接口描述符,对应USB协议中Standard Interface Descriptor。 | 33e41f4b71Sopenharmony_ci| [UsbEndpointDescriptor](_usb_endpoint_descriptor.md) | 标准端点描述符,对应USB协议中Standard Endpoint Descriptor。 | 34e41f4b71Sopenharmony_ci| [UsbDdkEndpointDescriptor](_usb_ddk_endpoint_descriptor.md) | 端点描述符。 | 35e41f4b71Sopenharmony_ci| [UsbDdkInterfaceDescriptor](_usb_ddk_interface_descriptor.md) | 接口描述符。 | 36e41f4b71Sopenharmony_ci| [UsbDdkInterface](_usb_ddk_interface.md) | USB接口,是特定接口下备用设置的集合。 | 37e41f4b71Sopenharmony_ci| [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) | 配置描述符。 | 38e41f4b71Sopenharmony_ci| [UsbRequestPipe](_usb_request_pipe.md) | 请求管道。 | 39e41f4b71Sopenharmony_ci| [UsbDeviceMemMap](_usb_device_mem_map.md) | 设备内存映射,通过[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)创建设备内存映射,使用内存映射后的缓冲区,获得更好的性能。 | 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci### 枚举 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci| 名称 | 描述 | 44e41f4b71Sopenharmony_ci| -------- | -------- | 45e41f4b71Sopenharmony_ci| [UsbDdkErrCode](#usbddkerrcode) {<br/>USB_DDK_SUCCESS = 0, USB_DDK_FAILED = -1, USB_DDK_INVALID_PARAMETER = -2, USB_DDK_MEMORY_ERROR = -3,<br/>USB_DDK_INVALID_OPERATION = -4, USB_DDK_NULL_PTR = -5, USB_DDK_DEVICE_BUSY = -6, USB_DDK_TIMEOUT = -7<br/>} | USB DDK 错误码定义。 | 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci### 函数 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci| 名称 | 描述 | 51e41f4b71Sopenharmony_ci| -------- | -------- | 52e41f4b71Sopenharmony_ci| [OH_Usb_Init](#oh_usb_init) (void) | 初始化DDK。 | 53e41f4b71Sopenharmony_ci| [OH_Usb_Release](#oh_usb_release) (void) | 释放DDK。 | 54e41f4b71Sopenharmony_ci| [OH_Usb_GetDeviceDescriptor](#oh_usb_getdevicedescriptor) (uint64_t deviceId, struct [UsbDeviceDescriptor](_usb_device_descriptor.md) \*desc) | 获取设备描述符。 | 55e41f4b71Sopenharmony_ci| [OH_Usb_GetConfigDescriptor](#oh_usb_getconfigdescriptor) (uint64_t deviceId, uint8_t configIndex, struct [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) \*\*const config) | 获取配置描述符。请在描述符使用完后使用[OH_Usb_FreeConfigDescriptor()](#oh_usb_freeconfigdescriptor)释放描述符,否则会造成内存泄露。 | 56e41f4b71Sopenharmony_ci| [OH_Usb_FreeConfigDescriptor](#oh_usb_freeconfigdescriptor) (const struct [UsbDdkConfigDescriptor](_usb_ddk_config_descriptor.md) \*const config) | 释放配置描述符,请在描述符使用完后释放描述符,否则会造成内存泄露。 | 57e41f4b71Sopenharmony_ci| [OH_Usb_ClaimInterface](#oh_usb_claiminterface) (uint64_t deviceId, uint8_t interfaceIndex, uint64_t \*[interfaceHandle](usb__ddk__types_8h.md#interfacehandle)) | 声明接口。 | 58e41f4b71Sopenharmony_ci| [OH_Usb_ReleaseInterface](#oh_usb_releaseinterface) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle)) | 释放接口。 | 59e41f4b71Sopenharmony_ci| [OH_Usb_SelectInterfaceSetting](#oh_usb_selectinterfacesetting) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), uint8_t settingIndex) | 激活接口的备用设置。 | 60e41f4b71Sopenharmony_ci| [OH_Usb_GetCurrentInterfaceSetting](#oh_usb_getcurrentinterfacesetting) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), uint8_t \*settingIndex) | 获取接口当前激活的备用设置。 | 61e41f4b71Sopenharmony_ci| [OH_Usb_SendControlReadRequest](#oh_usb_sendcontrolreadrequest) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), const struct [UsbControlRequestSetup](_usb_control_request_setup.md) \*setup, uint32_t [timeout](usb__ddk__types_8h.md#timeout), uint8_t \*data, uint32_t \*dataLen) | 发送控制读请求,该接口为同步接口。 | 62e41f4b71Sopenharmony_ci| [OH_Usb_SendControlWriteRequest](#oh_usb_sendcontrolwriterequest) (uint64_t [interfaceHandle](usb__ddk__types_8h.md#interfacehandle), const struct [UsbControlRequestSetup](_usb_control_request_setup.md) \*setup, uint32_t [timeout](usb__ddk__types_8h.md#timeout), const uint8_t \*data, uint32_t dataLen) | 发送控制写请求,该接口为同步接口。 | 63e41f4b71Sopenharmony_ci| [OH_Usb_SendPipeRequest](#oh_usb_sendpiperequest) (const struct [UsbRequestPipe](_usb_request_pipe.md) \*pipe, [UsbDeviceMemMap](_usb_device_mem_map.md) \*devMmap) | 发送管道请求,该接口为同步接口。中断传输和批量传输都使用该接口发送请求。 | 64e41f4b71Sopenharmony_ci| [OH_Usb_SendPipeRequestWithAshmem](#oh_usb_sendpiperequestwithashmem) (const struct [UsbRequestPipe](_usb_request_pipe.md) \*pipe, [DDK_Ashmem](_ddk_ashmem.md) \*ashmem) | 发送共享内存管道请求,该接口为同步接口。中断传输和批量传输都使用该接口发送请求。 | 65e41f4b71Sopenharmony_ci| [OH_Usb_CreateDeviceMemMap](#oh_usb_createdevicememmap) (uint64_t deviceId, size_t size, [UsbDeviceMemMap](_usb_device_mem_map.md) \*\*devMmap) | 创建缓冲区。请在缓冲区使用完后,调用[OH_Usb_DestroyDeviceMemMap()](#oh_usb_destroydevicememmap)销毁缓冲区,否则会造成资源泄露。 | 66e41f4b71Sopenharmony_ci| [OH_Usb_DestroyDeviceMemMap](#oh_usb_destroydevicememmap) ([UsbDeviceMemMap](_usb_device_mem_map.md) \*devMmap) | 销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄露。 | 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci#### 函数参数deviceId说明 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci设备ID(deviceId)的获取可通过外设查询接口queryDevices()查询。 71e41f4b71Sopenharmony_ci具体请查阅[扩展外设管理开发指导](../../device/driver/externaldevice-guidelines.md)。 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci#### 函数参数deviceId转换指导 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci通过外设查询接口queryDevices()获取到的deviceId,还需要通过数据转换,才能得到[OH_Usb_GetDeviceDescriptor](#oh_usb_getdevicedescriptor) 等函数的入参deviceId。 76e41f4b71Sopenharmony_ci<p>转换原理:提取queryDevices()获取到的deviceId的前32位作为C_API的deviceId。</p> 77e41f4b71Sopenharmony_ci<p>以下代码仅供参考:</p> 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci ~~~ 80e41f4b71Sopenharmony_ciuint64_t JsDeviceIdToNative(uint64_t deviceId) 81e41f4b71Sopenharmony_ci{ 82e41f4b71Sopenharmony_ci uint32_t busNum = (uint32_t)(deviceId >> 48); 83e41f4b71Sopenharmony_ci uint32_t devNum = (uint32_t)((deviceId & 0x0000FFFF00000000) >> 32); 84e41f4b71Sopenharmony_ci return (((static_cast<uint64_t>(busNum)) << 32) | devNum); 85e41f4b71Sopenharmony_ci} 86e41f4b71Sopenharmony_ci~~~ 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci## 枚举类型说明 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci### UsbDdkErrCode 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci``` 95e41f4b71Sopenharmony_cienum UsbDdkErrCode 96e41f4b71Sopenharmony_ci``` 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci**描述:** 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ciUSB DDK 错误码定义。 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 103e41f4b71Sopenharmony_ci| -------- | -------- | 104e41f4b71Sopenharmony_ci| USB_DDK_SUCCESS | 操作成功。 | 105e41f4b71Sopenharmony_ci| USB_DDK_FAILED | 操作失败。 | 106e41f4b71Sopenharmony_ci| USB_DDK_INVALID_PARAMETER | 非法参数。 | 107e41f4b71Sopenharmony_ci| USB_DDK_MEMORY_ERROR | 内存相关的错误,包括:内存不足、内存数据拷贝失败、内存申请失败等。 | 108e41f4b71Sopenharmony_ci| USB_DDK_INVALID_OPERATION | 非法操作。 | 109e41f4b71Sopenharmony_ci| USB_DDK_NULL_PTR | 空指针异常。 | 110e41f4b71Sopenharmony_ci| USB_DDK_DEVICE_BUSY | 设备忙。 | 111e41f4b71Sopenharmony_ci| USB_DDK_TIMEOUT | 传输超时。 | 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci## 函数说明 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci### OH_Usb_ClaimInterface() 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci``` 121e41f4b71Sopenharmony_ciint32_t OH_Usb_ClaimInterface (uint64_t deviceId, uint8_t interfaceIndex, uint64_t * interfaceHandle ) 122e41f4b71Sopenharmony_ci``` 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci**描述:** 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci声明接口。 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci**参数:** 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci| 名称 | 描述 | 133e41f4b71Sopenharmony_ci| -------- | -------- | 134e41f4b71Sopenharmony_ci| deviceId | 设备ID,代表要操作的设备。 | 135e41f4b71Sopenharmony_ci| interfaceIndex | 接口索引,对应USB协议中的[bInterfaceNumber](_usb_interface_descriptor.md#binterfacenumber)。 | 136e41f4b71Sopenharmony_ci| interfaceHandle | 接口操作句柄,接口声明成功后,该参数将会被赋值。 | 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci**返回:** 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 141e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 142e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 143e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参interfaceHandle为空指针。 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci### OH_Usb_CreateDeviceMemMap() 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci``` 150e41f4b71Sopenharmony_ciint32_t OH_Usb_CreateDeviceMemMap (uint64_t deviceId, size_t size, UsbDeviceMemMap ** devMmap ) 151e41f4b71Sopenharmony_ci``` 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci**描述:** 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci创建缓冲区。请在缓冲区使用完后,调用[OH_Usb_DestroyDeviceMemMap()](#oh_usb_destroydevicememmap)销毁缓冲区,否则会造成资源泄露。 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci**参数:** 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci| 名称 | 描述 | 162e41f4b71Sopenharmony_ci| -------- | -------- | 163e41f4b71Sopenharmony_ci| deviceId | 设备ID,代表要创建缓冲区的设备。 | 164e41f4b71Sopenharmony_ci| size | 缓冲区的大小。 | 165e41f4b71Sopenharmony_ci| devMmap | 创建的缓冲区通过该参数返回给调用者。 | 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci**返回:** 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 170e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 171e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参devMmap为空指针。 172e41f4b71Sopenharmony_ci- [USB_DDK_MEMORY_ERROR](#usbddkerrcode):表示mmap失败或者申请devMmap的内存空间失败。 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci### OH_Usb_DestroyDeviceMemMap() 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci``` 179e41f4b71Sopenharmony_civoid OH_Usb_DestroyDeviceMemMap (UsbDeviceMemMap * devMmap) 180e41f4b71Sopenharmony_ci``` 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci**描述:** 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄露。 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci**参数:** 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci| 名称 | 描述 | 191e41f4b71Sopenharmony_ci| -------- | -------- | 192e41f4b71Sopenharmony_ci| devMmap | 销毁由[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)创建的缓冲区。 | 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci### OH_Usb_FreeConfigDescriptor() 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci``` 199e41f4b71Sopenharmony_civoid OH_Usb_FreeConfigDescriptor (struct UsbDdkConfigDescriptor *const config) 200e41f4b71Sopenharmony_ci``` 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci**描述:** 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci释放配置描述符,请在描述符使用完后释放描述符,否则会造成内存泄露。 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**参数:** 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci| 名称 | 描述 | 211e41f4b71Sopenharmony_ci| -------- | -------- | 212e41f4b71Sopenharmony_ci| config | 配置描述符,通过[OH_Usb_GetConfigDescriptor()](#oh_usb_getconfigdescriptor)获得的配置描述符。 | 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci### OH_Usb_GetConfigDescriptor() 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci``` 219e41f4b71Sopenharmony_ciint32_t OH_Usb_GetConfigDescriptor (uint64_t deviceId, uint8_t configIndex, struct UsbDdkConfigDescriptor **const config ) 220e41f4b71Sopenharmony_ci``` 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**描述:** 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci获取配置描述符。请在描述符使用完后使用[OH_Usb_FreeConfigDescriptor()](#oh_usb_freeconfigdescriptor)释放描述符,否则会造成内存泄露。 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci**参数:** 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci| 名称 | 描述 | 231e41f4b71Sopenharmony_ci| -------- | -------- | 232e41f4b71Sopenharmony_ci| deviceId | 设备ID,代表要获取配置描述符的设备。 | 233e41f4b71Sopenharmony_ci| configIndex | 配置id,对应USB协议中的[bConfigurationValue](_usb_config_descriptor.md#bconfigurationvalue)。 | 234e41f4b71Sopenharmony_ci| config | 配置描述符,包含USB协议中定义的标准配置描述符,以及与其关联的接口描述符和端点描述符。 | 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**返回:** 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 239e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 240e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 241e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参config为空指针。 242e41f4b71Sopenharmony_ci 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci### OH_Usb_GetCurrentInterfaceSetting() 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci``` 248e41f4b71Sopenharmony_ciint32_t OH_Usb_GetCurrentInterfaceSetting (uint64_t interfaceHandle, uint8_t * settingIndex ) 249e41f4b71Sopenharmony_ci``` 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci**描述:** 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci获取接口当前激活的备用设置。 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 256e41f4b71Sopenharmony_ci 257e41f4b71Sopenharmony_ci**参数:** 258e41f4b71Sopenharmony_ci 259e41f4b71Sopenharmony_ci| 名称 | 描述 | 260e41f4b71Sopenharmony_ci| -------- | -------- | 261e41f4b71Sopenharmony_ci| interfaceHandle | 接口操作句柄,代表要操作的接口。 | 262e41f4b71Sopenharmony_ci| settingIndex | 备用设置索引,对应USB协议中的[bAlternateSetting](_usb_interface_descriptor.md#balternatesetting)。 | 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci**返回:** 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 267e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 268e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 269e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参settingIndex为空指针。 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_ci### OH_Usb_GetDeviceDescriptor() 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci``` 276e41f4b71Sopenharmony_ciint32_t OH_Usb_GetDeviceDescriptor (uint64_t deviceId, struct UsbDeviceDescriptor * desc ) 277e41f4b71Sopenharmony_ci``` 278e41f4b71Sopenharmony_ci 279e41f4b71Sopenharmony_ci**描述:** 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ci获取设备描述符。 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci**参数:** 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_ci| 名称 | 描述 | 288e41f4b71Sopenharmony_ci| -------- | -------- | 289e41f4b71Sopenharmony_ci| deviceId | 设备ID,代表要获取描述符的设备。 | 290e41f4b71Sopenharmony_ci| desc | 设备描述符,详细定义请参考[UsbDeviceDescriptor](_usb_device_descriptor.md)。 | 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_ci**返回:** 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 295e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 296e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 297e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参desc为空指针。 298e41f4b71Sopenharmony_ci 299e41f4b71Sopenharmony_ci### OH_Usb_Init() 300e41f4b71Sopenharmony_ci 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ci``` 303e41f4b71Sopenharmony_ciint32_t OH_Usb_Init (void ) 304e41f4b71Sopenharmony_ci``` 305e41f4b71Sopenharmony_ci 306e41f4b71Sopenharmony_ci**描述:** 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ci初始化DDK。 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 311e41f4b71Sopenharmony_ci 312e41f4b71Sopenharmony_ci**返回:** 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 315e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败、连接usb_ddk服务失败或者内部错误失败。 316e41f4b71Sopenharmony_ci 317e41f4b71Sopenharmony_ci### OH_Usb_Release() 318e41f4b71Sopenharmony_ci 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci``` 321e41f4b71Sopenharmony_civoid OH_Usb_Release (void ) 322e41f4b71Sopenharmony_ci``` 323e41f4b71Sopenharmony_ci 324e41f4b71Sopenharmony_ci**描述:** 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_ci释放DDK。 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci 331e41f4b71Sopenharmony_ci### OH_Usb_ReleaseInterface() 332e41f4b71Sopenharmony_ci 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_ci``` 335e41f4b71Sopenharmony_ciint32_t OH_Usb_ReleaseInterface (uint64_t interfaceHandle) 336e41f4b71Sopenharmony_ci``` 337e41f4b71Sopenharmony_ci 338e41f4b71Sopenharmony_ci**描述:** 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci释放接口。 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_ci**参数:** 345e41f4b71Sopenharmony_ci 346e41f4b71Sopenharmony_ci| 名称 | 描述 | 347e41f4b71Sopenharmony_ci| -------- | -------- | 348e41f4b71Sopenharmony_ci| interfaceHandle | 接口操作句柄,代表要释放的接口。 | 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci**返回:** 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 353e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 354e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci 357e41f4b71Sopenharmony_ci### OH_Usb_SelectInterfaceSetting() 358e41f4b71Sopenharmony_ci 359e41f4b71Sopenharmony_ci 360e41f4b71Sopenharmony_ci``` 361e41f4b71Sopenharmony_ciint32_t OH_Usb_SelectInterfaceSetting (uint64_t interfaceHandle, uint8_t settingIndex ) 362e41f4b71Sopenharmony_ci``` 363e41f4b71Sopenharmony_ci 364e41f4b71Sopenharmony_ci**描述:** 365e41f4b71Sopenharmony_ci 366e41f4b71Sopenharmony_ci激活接口的备用设置。 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci**参数:** 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_ci| 名称 | 描述 | 373e41f4b71Sopenharmony_ci| -------- | -------- | 374e41f4b71Sopenharmony_ci| interfaceHandle | 接口操作句柄,代表要操作的接口。 | 375e41f4b71Sopenharmony_ci| settingIndex | 备用设置索引,对应USB协议中的[bAlternateSetting](_usb_interface_descriptor.md#balternatesetting)。 | 376e41f4b71Sopenharmony_ci 377e41f4b71Sopenharmony_ci**返回:** 378e41f4b71Sopenharmony_ci 379e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 380e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 381e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci 384e41f4b71Sopenharmony_ci### OH_Usb_SendControlReadRequest() 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci``` 388e41f4b71Sopenharmony_ciint32_t OH_Usb_SendControlReadRequest (uint64_t interfaceHandle, const struct UsbControlRequestSetup * setup, uint32_t timeout, uint8_t * data, uint32_t * dataLen ) 389e41f4b71Sopenharmony_ci``` 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci**描述:** 392e41f4b71Sopenharmony_ci 393e41f4b71Sopenharmony_ci发送控制读请求,该接口为同步接口。 394e41f4b71Sopenharmony_ci 395e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 396e41f4b71Sopenharmony_ci 397e41f4b71Sopenharmony_ci**参数:** 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci| 名称 | 描述 | 400e41f4b71Sopenharmony_ci| -------- | -------- | 401e41f4b71Sopenharmony_ci| interfaceHandle | 接口操作句柄,代表要操作的接口。 | 402e41f4b71Sopenharmony_ci| setup | 请求相关的参数,详细定义请参考 [UsbControlRequestSetup](_usb_control_request_setup.md)。 | 403e41f4b71Sopenharmony_ci| timeout | 超时时间,单位为毫秒。 | 404e41f4b71Sopenharmony_ci| data | 要传输的数据。 | 405e41f4b71Sopenharmony_ci| dataLen | 表示data的数据长度,在函数返回后,表示实际读取到的数据的长度。 | 406e41f4b71Sopenharmony_ci 407e41f4b71Sopenharmony_ci**返回:** 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 410e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 411e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 412e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参setup、data或者dataLen为空指针,亦或datalen小于读取到的数据长度。 413e41f4b71Sopenharmony_ci- [USB_DDK_MEMORY_ERROR](#usbddkerrcode):表示拷贝读取数据的内存失败。 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_ci### OH_Usb_SendControlWriteRequest() 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_ci``` 420e41f4b71Sopenharmony_ciint32_t OH_Usb_SendControlWriteRequest (uint64_t interfaceHandle, const struct UsbControlRequestSetup * setup, uint32_t timeout, const uint8_t * data, uint32_t dataLen ) 421e41f4b71Sopenharmony_ci``` 422e41f4b71Sopenharmony_ci 423e41f4b71Sopenharmony_ci**描述:** 424e41f4b71Sopenharmony_ci 425e41f4b71Sopenharmony_ci发送控制写请求,该接口为同步接口。 426e41f4b71Sopenharmony_ci 427e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 428e41f4b71Sopenharmony_ci 429e41f4b71Sopenharmony_ci**参数:** 430e41f4b71Sopenharmony_ci 431e41f4b71Sopenharmony_ci| 名称 | 描述 | 432e41f4b71Sopenharmony_ci| -------- | -------- | 433e41f4b71Sopenharmony_ci| interfaceHandle | 接口操作句柄,代表要操作的接口。 | 434e41f4b71Sopenharmony_ci| setup | 请求相关的参数,详细定义请参考 [UsbControlRequestSetup](_usb_control_request_setup.md)。 | 435e41f4b71Sopenharmony_ci| timeout | 超时时间,单位为毫秒。 | 436e41f4b71Sopenharmony_ci| data | 要传输的数据。 | 437e41f4b71Sopenharmony_ci| dataLen | 表示data的数据长度。 | 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci**返回:** 440e41f4b71Sopenharmony_ci 441e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 442e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 443e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 444e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参setup或者data为空指针。 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ci 447e41f4b71Sopenharmony_ci### OH_Usb_SendPipeRequest() 448e41f4b71Sopenharmony_ci 449e41f4b71Sopenharmony_ci 450e41f4b71Sopenharmony_ci``` 451e41f4b71Sopenharmony_ciint32_t OH_Usb_SendPipeRequest (const struct UsbRequestPipe * pipe, UsbDeviceMemMap * devMmap ) 452e41f4b71Sopenharmony_ci``` 453e41f4b71Sopenharmony_ci 454e41f4b71Sopenharmony_ci**描述:** 455e41f4b71Sopenharmony_ci 456e41f4b71Sopenharmony_ci发送管道请求,该接口为同步接口。中断传输和批量传输都使用该接口发送请求。 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci**参数:** 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci| 名称 | 描述 | 463e41f4b71Sopenharmony_ci| -------- | -------- | 464e41f4b71Sopenharmony_ci| pipe | 要传输数据的管道信息。 | 465e41f4b71Sopenharmony_ci| devMmap | 数据缓冲区,可以通过[OH_Usb_CreateDeviceMemMap()](#oh_usb_createdevicememmap)获得。 | 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci**返回:** 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 470e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 471e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 472e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参pipe、devMmap或者devMmap的地址为空指针。 473e41f4b71Sopenharmony_ci 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci### OH_Usb_SendPipeRequestWithAshmem() 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci 478e41f4b71Sopenharmony_ci``` 479e41f4b71Sopenharmony_ciint32_t OH_Usb_SendPipeRequestWithAshmem(const struct UsbRequestPipe *pipe, DDK_Ashmem *ashmem); 480e41f4b71Sopenharmony_ci``` 481e41f4b71Sopenharmony_ci 482e41f4b71Sopenharmony_ci**描述:** 483e41f4b71Sopenharmony_ci 484e41f4b71Sopenharmony_ci发送共享内存的管道请求,该接口为同步接口。中断传输和批量传输都使用该接口发送请求。 485e41f4b71Sopenharmony_ci 486e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.ACCESS_DDK_USB 487e41f4b71Sopenharmony_ci 488e41f4b71Sopenharmony_ci**参数:** 489e41f4b71Sopenharmony_ci 490e41f4b71Sopenharmony_ci| 名称 | 描述 | 491e41f4b71Sopenharmony_ci| -------- | -------- | 492e41f4b71Sopenharmony_ci| pipe | 要传输数据的管道信息。 | 493e41f4b71Sopenharmony_ci| ashmem | 共享内存,可以通过[OH_DDK_CreateAshmem()](_base_ddk.md#oh_ddk_createashmem)获得。 | 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci**返回:** 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_ci- [USB_DDK_SUCCESS](#usbddkerrcode):表示调用接口成功。 498e41f4b71Sopenharmony_ci- [USB_DDK_FAILED](#usbddkerrcode):表示权限校验失败或者内部错误失败。 499e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_OPERATION](#usbddkerrcode):表示连接usb_ddk服务失败。 500e41f4b71Sopenharmony_ci- [USB_DDK_INVALID_PARAMETER](#usbddkerrcode):表示入参pipe、ashmem或者ashmem的地址为空指针。 501e41f4b71Sopenharmony_ci 502