• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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