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/>引用文件:&lt;usb/usb_ddk_api.h&gt; <br/>库: libusb_ndk.z.so|
22e41f4b71Sopenharmony_ci| [usb_ddk_types.h](usb__ddk__types_8h.md) | 提供USB DDK中的枚举变量、结构体定义与宏定义。<br/>引用文件:&lt;usb/usb_ddk_types.h&gt; <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