1# hid_ddk_api.h 2<!--Kit: Driver Development Kit--> 3<!--Subsystem: Driver--> 4<!--Owner: @lixinsheng2--> 5<!--Designer: @w00373942--> 6<!--Tester: @dong-dongzhen--> 7<!--Adviser: @w_Machine_cc--> 8 9## 概述 10 11声明主机侧访问输入设备的HID DDK接口。 12 13**引用文件:** <hid/hid_ddk_api.h> 14 15**库:** libhid.z.so 16 17**系统能力:** SystemCapability.Driver.HID.Extension 18 19**起始版本:** 11 20 21**相关模块:** [HidDdk](capi-hidddk.md) 22 23## 汇总 24 25### 函数 26 27| 名称 | 描述 | 28| -- | -- | 29| [int32_t OH_Hid_CreateDevice(Hid_Device *hidDevice, Hid_EventProperties *hidEventProperties)](#oh_hid_createdevice) | 创建设备。 | 30| [int32_t OH_Hid_EmitEvent(int32_t deviceId, const Hid_EmitItem items[], uint16_t length)](#oh_hid_emitevent) | 向指定设备发送事件列表。 | 31| [int32_t OH_Hid_DestroyDevice(int32_t deviceId)](#oh_hid_destroydevice) | 销毁设备。 | 32| [int32_t OH_Hid_Init(void)](#oh_hid_init) | 初始化HID DDK。 | 33| [int32_t OH_Hid_Release(void)](#oh_hid_release) | 释放HID DDK。 | 34| [int32_t OH_Hid_Open(uint64_t deviceId, uint8_t interfaceIndex, Hid_DeviceHandle **dev)](#oh_hid_open) | 打开deviceId和interfaceIndex指定的设备。 | 35| [int32_t OH_Hid_Close(Hid_DeviceHandle **dev)](#oh_hid_close) | 关闭设备。 | 36| [int32_t OH_Hid_Write(Hid_DeviceHandle *dev, uint8_t *data, uint32_t length, uint32_t *bytesWritten)](#oh_hid_write) | 向设备写入报告。 | 37| [int32_t OH_Hid_ReadTimeout(Hid_DeviceHandle *dev, uint8_t *data, uint32_t bufSize, int timeout, uint32_t *bytesRead)](#oh_hid_readtimeout) | 在指定的超时时间内从设备读取报告。 | 38| [int32_t OH_Hid_Read(Hid_DeviceHandle *dev, uint8_t *data, uint32_t bufSize, uint32_t *bytesRead)](#oh_hid_read) | 从设备读取报告,默认为阻塞模式(阻塞等待直到有数据可读取),可以调用[OH_Hid_SetNonBlocking](capi-hid-ddk-api-h.md#oh_hid_setnonblocking)改变模式。 | 39| [int32_t OH_Hid_SetNonBlocking(Hid_DeviceHandle *dev, int nonBlock)](#oh_hid_setnonblocking) | 设置设备读取模式为非阻塞。 | 40| [int32_t OH_Hid_GetRawInfo(Hid_DeviceHandle *dev, Hid_RawDevInfo *rawDevInfo)](#oh_hid_getrawinfo) | 获取设备原始信息。 | 41| [int32_t OH_Hid_GetRawName(Hid_DeviceHandle *dev, char *data, uint32_t bufSize)](#oh_hid_getrawname) | 获取设备原始名称。 | 42| [int32_t OH_Hid_GetPhysicalAddress(Hid_DeviceHandle *dev, char *data, uint32_t bufSize)](#oh_hid_getphysicaladdress) | 获取设备物理地址。 | 43| [int32_t OH_Hid_GetRawUniqueId(Hid_DeviceHandle *dev, uint8_t *data, uint32_t bufSize)](#oh_hid_getrawuniqueid) | 获取设备原始唯一标识符。 | 44| [int32_t OH_Hid_SendReport(Hid_DeviceHandle *dev, Hid_ReportType reportType, const uint8_t *data, uint32_t length)](#oh_hid_sendreport) | 向设备发送报告。 | 45| [int32_t OH_Hid_GetReport(Hid_DeviceHandle *dev, Hid_ReportType reportType, uint8_t *data, uint32_t bufSize)](#oh_hid_getreport) | 获取设备报告。 | 46| [int32_t OH_Hid_GetReportDescriptor(Hid_DeviceHandle *dev, uint8_t *buf, uint32_t bufSize, uint32_t *bytesRead)](#oh_hid_getreportdescriptor) | 获取设备报告描述符。 | 47 48## 函数说明 49 50### OH_Hid_CreateDevice() 51 52``` 53int32_t OH_Hid_CreateDevice(Hid_Device *hidDevice, Hid_EventProperties *hidEventProperties) 54``` 55 56**描述** 57 58创建设备。 59 60**需要权限:** ohos.permission.ACCESS_DDK_HID 61 62**起始版本:** 11 63 64 65**参数:** 66 67| 参数项 | 描述 | 68|-------------------------------------------------------------------------------| -- | 69| [Hid_Device](capi-hidddk-hid-device.md) *hidDevice | 创建设备需要的基本信息,包括设备名、厂商ID、产品ID等。 | 70| [Hid_EventProperties](capi-hidddk-hid-eventproperties.md) *hidEventProperties | 创建的设备关注的事件,包括事件类型、按键事件属性、绝对坐标事件属性、相对坐标事件属性等。 | 71 72**返回:** 73 74| 类型 | 说明 | 75| -- | -- | 76| int32_t | deviceID (一个非负的数字) 调用接口成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 连接hid_ddk服务失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能的原因:1. 入参hidDevice为空指针;<br> 2. 入参hidEventProperties为空指针; 3. properties的长度超过7; 4. hidEventTypes的长度超过5;<br> 5. hidKeys的长度超过100; 6. hidAbs的长度超过26; 7.hidRelBits的长度超过13;<br> 8. hidMiscellaneous的长度超过6。<br> [HID_DDK_FAILURE](capi-hid-ddk-types-h.md#hid_ddkerrcode) 设备数量达到最大值200。 | 77 78### OH_Hid_EmitEvent() 79 80``` 81int32_t OH_Hid_EmitEvent(int32_t deviceId, const Hid_EmitItem items[], uint16_t length) 82``` 83 84**描述** 85 86向指定设备发送事件列表。 87 88**需要权限:** ohos.permission.ACCESS_DDK_HID 89 90**起始版本:** 11 91 92 93**参数:** 94 95| 参数项 | 描述 | 96| -- | -- | 97| int32_t deviceId | 设备ID。 | 98| items | 发送的事件列表,事件包括类型(取值来源事件类型Hid_EventType)、编码(取值来源同步事件编码Hid_SynEvent、键值编码Hid_KeyCode、按钮编码HidBtnCode、绝对坐标编码Hid_AbsAxes、相对坐标编码Hid_RelAxes、其它类型的输入事件编码Hid_MscEvent)、值(根据实际设备输入决定)。 | 99| uint16_t length | 发送事件列表长度(一次发送事件个数)。 | 100 101**返回:** 102 103| 类型 | 说明 | 104| -- | -- | 105| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 调用接口成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 连接hid_ddk服务失败或者调用方不是设备的创建者。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能的原因: 1.设备ID小于0;<br> 2.入参length长度超过7; 3.入参items为空指针。<br> [HID_DDK_NULL_PTR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 对应设备的注入为空。<br> [HID_DDK_FAILURE](capi-hid-ddk-types-h.md#hid_ddkerrcode) 对应设备不存在。 | 106 107### OH_Hid_DestroyDevice() 108 109``` 110int32_t OH_Hid_DestroyDevice(int32_t deviceId) 111``` 112 113**描述** 114 115销毁设备。 116 117**需要权限:** ohos.permission.ACCESS_DDK_HID 118 119**起始版本:** 11 120 121 122**参数:** 123 124| 参数项 | 描述 | 125| -- | -- | 126| int32_t deviceId | 设备ID。 | 127 128**返回:** 129 130| 类型 | 说明 | 131| -- | -- | 132| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 调用接口成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 连接hid_ddk服务失败或者调用方不是设备的创建者。<br> [HID_DDK_FAILURE](capi-hid-ddk-types-h.md#hid_ddkerrcode) 对应设备不存在。 | 133 134### OH_Hid_Init() 135 136``` 137int32_t OH_Hid_Init(void) 138``` 139 140**描述** 141 142初始化HID DDK。 143 144**需要权限:** ohos.permission.ACCESS_DDK_HID 145 146**起始版本:** 18 147 148**返回:** 149 150| 类型 | 说明 | 151| -- | -- | 152| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 初始化DDK失败。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。 | 153 154### OH_Hid_Release() 155 156``` 157int32_t OH_Hid_Release(void) 158``` 159 160**描述** 161 162释放HID DDK。 163 164**需要权限:** ohos.permission.ACCESS_DDK_HID 165 166**起始版本:** 18 167 168**返回:** 169 170| 类型 | 说明 | 171| -- | -- | 172| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。 | 173 174### OH_Hid_Open() 175 176``` 177int32_t OH_Hid_Open(uint64_t deviceId, uint8_t interfaceIndex, Hid_DeviceHandle **dev) 178``` 179 180**描述** 181 182打开deviceId和interfaceIndex指定的设备。 183 184**需要权限:** ohos.permission.ACCESS_DDK_HID 185 186**起始版本:** 18 187 188 189**参数:** 190 191| 参数项 | 描述 | 192|----------------------------| -- | 193| uint64_t deviceId | 操作设备的ID。 | 194| uint8_t interfaceIndex | 接口索引,对应HID设备的接口。 | 195| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) **dev | 设备操作句柄。 | 196 197**返回:** 198 199| 类型 | 说明 | 200| -- | -- | 201| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) dev内存申请失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) dev为空。<br> [HID_DDK_DEVICE_NOT_FOUND](capi-hid-ddk-types-h.md#hid_ddkerrcode) 根据deviceId和interfaceIndex找不到设备。 | 202 203### OH_Hid_Close() 204 205``` 206int32_t OH_Hid_Close(Hid_DeviceHandle **dev) 207``` 208 209**描述** 210 211关闭设备。 212 213**需要权限:** ohos.permission.ACCESS_DDK_HID 214 215**起始版本:** 18 216 217 218**参数:** 219 220| 参数项 | 描述 | 221| -- | -- | 222| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) **dev | 设备操作句柄。 | 223 224**返回:** 225 226| 类型 | 说明 | 227| -- | -- | 228| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) dev为空。 | 229 230### OH_Hid_Write() 231 232``` 233int32_t OH_Hid_Write(Hid_DeviceHandle *dev, uint8_t *data, uint32_t length, uint32_t *bytesWritten) 234``` 235 236**描述** 237 238向设备写入报告。 239 240**需要权限:** ohos.permission.ACCESS_DDK_HID 241 242**起始版本:** 18 243 244 245**参数:** 246 247| 参数项 | 描述 | 248| -- | -- | 249| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 250| uint8_t *data | 待写入的数据。 | 251| uint32_t length | 写入数据的字节长度,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 252| uint32_t *bytesWritten | 实际写入的数据字节数。 | 253 254**返回:** 255 256| 类型 | 说明 | 257| -- | -- | 258| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. length为0;4. length超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size);<br> 5. bytesWritten为空。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。 | 259 260### OH_Hid_ReadTimeout() 261 262``` 263int32_t OH_Hid_ReadTimeout(Hid_DeviceHandle *dev, uint8_t *data, uint32_t bufSize, int timeout, uint32_t *bytesRead) 264``` 265 266**描述** 267 268在指定的超时时间内从设备读取报告。 269 270**需要权限:** ohos.permission.ACCESS_DDK_HID 271 272**起始版本:** 18 273 274 275**参数:** 276 277| 参数项 | 描述 | 278| -- | -- | 279| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 280| uint8_t *data | 存放读取数据的缓冲区。 | 281| uint32_t bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 282| int timeout | 超时时间(毫秒)或-1表示阻塞等待。 | 283| uint32_t *bytesRead | 读取的字节数。 | 284 285**返回:** 286 287| 类型 | 说明 | 288| -- | -- | 289| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size);<br> 5. bytesRead为空。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_TIMEOUT](capi-hid-ddk-types-h.md#hid_ddkerrcode) 读取超时。 | 290 291### OH_Hid_Read() 292 293``` 294int32_t OH_Hid_Read(Hid_DeviceHandle *dev, uint8_t *data, uint32_t bufSize, uint32_t *bytesRead) 295``` 296 297**描述** 298 299从设备读取报告,默认为阻塞模式(阻塞等待直到有数据可读取),可以调用[OH_Hid_SetNonBlocking](capi-hid-ddk-api-h.md#oh_hid_setnonblocking)改变模式。 300 301**需要权限:** ohos.permission.ACCESS_DDK_HID 302 303**起始版本:** 18 304 305 306**参数:** 307 308| 参数项 | 描述 | 309| -- | -- | 310| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 311| uint8_t *data | 存放读取数据的缓冲区。 | 312| uint32_t bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 313| uint32_t *bytesRead | 读取的字节数。 | 314 315**返回:** 316 317| 类型 | 说明 | 318| -- | -- | 319| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size);<br> 5.bytesRead为空。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_TIMEOUT](capi-hid-ddk-types-h.md#hid_ddkerrcode) 读取超时。 | 320 321### OH_Hid_SetNonBlocking() 322 323``` 324int32_t OH_Hid_SetNonBlocking(Hid_DeviceHandle *dev, int nonBlock) 325``` 326 327**描述** 328 329设置设备读取模式为非阻塞。 330 331**需要权限:** ohos.permission.ACCESS_DDK_HID 332 333**起始版本:** 18 334 335 336**参数:** 337 338| 参数项 | 描述 | 339| -- | -- | 340| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 341| int nonBlock | 是否启用非阻塞模式读取数据。1: 启用非阻塞模式,调用[OH_Hid_Read](capi-hid-ddk-api-h.md#oh_hid_read)接口时,如果设备有可读的数据,读取并返回[HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode),<br> 如果设备没有数据可读,则返回[HID_DDK_TIMEOUT](capi-hid-ddk-types-h.md#hid_ddkerrcode)。0: 禁用非阻塞模式。 | 342 343**返回:** 344 345| 类型 | 说明 | 346| -- | -- | 347| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. nonBlock不是1或0。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。 | 348 349### OH_Hid_GetRawInfo() 350 351``` 352int32_t OH_Hid_GetRawInfo(Hid_DeviceHandle *dev, Hid_RawDevInfo *rawDevInfo) 353``` 354 355**描述** 356 357获取设备原始信息。 358 359**需要权限:** ohos.permission.ACCESS_DDK_HID 360 361**起始版本:** 18 362 363 364**参数:** 365 366| 参数项 | 描述 | 367|-------------------------------------------------------------| -- | 368| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 369| [Hid_RawDevInfo](capi-hidddk-hid-rawdevinfo.md) *rawDevInfo | 设备原始信息,包含供应商ID、产品ID和总线类型。 | 370 371**返回:** 372 373| 类型 | 说明 | 374| -- | -- | 375| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. rawDevInfo为空。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 376 377### OH_Hid_GetRawName() 378 379``` 380int32_t OH_Hid_GetRawName(Hid_DeviceHandle *dev, char *data, uint32_t bufSize) 381``` 382 383**描述** 384 385获取设备原始名称。 386 387**需要权限:** ohos.permission.ACCESS_DDK_HID 388 389**起始版本:** 18 390 391 392**参数:** 393 394| 参数项 | 描述 | 395| -- | -- | 396| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 397| char *data | 存放读取数据的缓冲区。 | 398| uint32_t bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 399 400**返回:** 401 402| 类型 | 说明 | 403| -- | -- | 404| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 405 406### OH_Hid_GetPhysicalAddress() 407 408``` 409int32_t OH_Hid_GetPhysicalAddress(Hid_DeviceHandle *dev, char *data, uint32_t bufSize) 410``` 411 412**描述** 413 414获取设备物理地址。 415 416**需要权限:** ohos.permission.ACCESS_DDK_HID 417 418**起始版本:** 18 419 420 421**参数:** 422 423| 参数项 | 描述 | 424| -- | -- | 425| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 426| char *data | 存放读取数据的缓冲区。 | 427| uint32_t bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 428 429**返回:** 430 431| 类型 | 说明 | 432| -- | -- | 433| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 434 435### OH_Hid_GetRawUniqueId() 436 437``` 438int32_t OH_Hid_GetRawUniqueId(Hid_DeviceHandle *dev, uint8_t *data, uint32_t bufSize) 439``` 440 441**描述** 442 443获取设备原始唯一标识符。 444 445**需要权限:** ohos.permission.ACCESS_DDK_HID 446 447**起始版本:** 18 448 449 450**参数:** 451 452| 参数项 | 描述 | 453| -- | -- | 454| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 455| uint8_t *data | 存放读取数据的缓冲区。 | 456| uint32_t bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 457 458**返回:** 459 460| 类型 | 说明 | 461| -- | -- | 462| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 463 464### OH_Hid_SendReport() 465 466``` 467int32_t OH_Hid_SendReport(Hid_DeviceHandle *dev, Hid_ReportType reportType, const uint8_t *data, uint32_t length) 468``` 469 470**描述** 471 472向设备发送报告。 473 474**需要权限:** ohos.permission.ACCESS_DDK_HID 475 476**起始版本:** 18 477 478 479**参数:** 480 481| 参数项 | 描述 | 482| -- |---------------------------------------------------------------------------------------------------| 483| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 484| [Hid_ReportType](capi-hid-ddk-types-h.md#hid_reporttype) reportType | 报告类型。 | 485| const uint8_t *data | 待发送的数据。 | 486| uint32_t length | 发送数据的字节长度,最大不超过 [HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 487 488**返回:** 489 490| 类型 | 说明 | 491| -- | -- | 492| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. length为0;4. length超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 493 494### OH_Hid_GetReport() 495 496``` 497int32_t OH_Hid_GetReport(Hid_DeviceHandle *dev, Hid_ReportType reportType, uint8_t *data, uint32_t bufSize) 498``` 499 500**描述** 501 502获取设备报告。 503 504**需要权限:** ohos.permission.ACCESS_DDK_HID 505 506**起始版本:** 18 507 508 509**参数:** 510 511| 参数项 | 描述 | 512| -- | -- | 513| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 514| [Hid_ReportType](capi-hid-ddk-types-h.md#hid_reporttype) reportType | 报告类型。 | 515| uint8_t *data | 存放读取数据的缓冲区。 | 516| uint32_t bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 517 518**返回:** 519 520| 类型 | 说明 | 521| -- | -- | 522| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 523 524### OH_Hid_GetReportDescriptor() 525 526``` 527int32_t OH_Hid_GetReportDescriptor(Hid_DeviceHandle *dev, uint8_t *buf, uint32_t bufSize, uint32_t *bytesRead) 528``` 529 530**描述** 531 532获取设备报告描述符。 533 534**需要权限:** ohos.permission.ACCESS_DDK_HID 535 536**起始版本:** 18 537 538 539**参数:** 540 541| 参数项 | 描述 | 542| -- | -- | 543| [Hid_DeviceHandle](capi-hidddk-hid-devicehandle.md) *dev | 设备操作句柄。 | 544| uint8_t *buf | 存放描述符的缓冲区。 | 545| uint32_t bufSize | 缓冲区的字节大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size)。 | 546| uint32_t *bytesRead | 读取的字节数。 | 547 548**返回:** 549 550| 类型 | 说明 | 551| -- | -- | 552| int32_t | [HID_DDK_SUCCESS](capi-hid-ddk-types-h.md#hid_ddkerrcode) 操作成功。<br> [HID_DDK_NO_PERM](capi-hid-ddk-types-h.md#hid_ddkerrcode) 权限校验失败。<br> [HID_DDK_INVALID_PARAMETER](capi-hid-ddk-types-h.md#hid_ddkerrcode) 参数校验失败。可能原因:1. dev为空;<br> 2. buf为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](capi-hid-ddk-types-h.md#hid_max_report_buffer_size);<br> 5. bytesRead为空。<br> [HID_DDK_INIT_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) DDK未初始化。<br> [HID_DDK_SERVICE_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 与DDK服务通信失败。<br> [HID_DDK_MEMORY_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) 内存数据拷贝失败。<br> [HID_DDK_IO_ERROR](capi-hid-ddk-types-h.md#hid_ddkerrcode) I/O操作失败。<br> [HID_DDK_INVALID_OPERATION](capi-hid-ddk-types-h.md#hid_ddkerrcode) 不支持此操作。 | 553 554 555