• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# scsi_peripheral_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声明用于主机侧访问SCSI设备的SCSI Peripheral DDK接口。
12
13**引用文件:** <scsi_peripheral/scsi_peripheral_api.h>
14
15**系统能力:** SystemCapability.Driver.SCSI.Extension
16
17**起始版本:** 18
18
19**相关模块:** [SCSIPeripheralDDK](capi-scsiperipheralddk.md)
20
21## 汇总
22
23### 函数
24
25| 名称 | 描述 |
26| -- | -- |
27| [int32_t OH_ScsiPeripheral_Init(void)](#oh_scsiperipheral_init) | 初始化SCSI Peripheral DDK。 |
28| [int32_t OH_ScsiPeripheral_Release(void)](#oh_scsiperipheral_release) | 释放SCSI Peripheral DDK。 |
29| [int32_t OH_ScsiPeripheral_Open(uint64_t deviceId, uint8_t interfaceIndex, ScsiPeripheral_Device **dev)](#oh_scsiperipheral_open) | 打开deviceId和interfaceIndex指定的SCSI设备。 |
30| [int32_t OH_ScsiPeripheral_Close(ScsiPeripheral_Device **dev)](#oh_scsiperipheral_close) | 关闭SCSI设备。 |
31| [int32_t OH_ScsiPeripheral_TestUnitReady(ScsiPeripheral_Device *dev, ScsiPeripheral_TestUnitReadyRequest *request,ScsiPeripheral_Response *response)](#oh_scsiperipheral_testunitready) | 检查逻辑单元是否已经准备好。 |
32| [int32_t OH_ScsiPeripheral_Inquiry(ScsiPeripheral_Device *dev, ScsiPeripheral_InquiryRequest *request,ScsiPeripheral_InquiryInfo *inquiryInfo, ScsiPeripheral_Response *response)](#oh_scsiperipheral_inquiry) | 查询SCSI设备的基本信息。 |
33| [int32_t OH_ScsiPeripheral_ReadCapacity10(ScsiPeripheral_Device *dev, ScsiPeripheral_ReadCapacityRequest *request,ScsiPeripheral_CapacityInfo *capacityInfo, ScsiPeripheral_Response *response)](#oh_scsiperipheral_readcapacity10) | 获取SCSI设备的容量信息。 |
34| [int32_t OH_ScsiPeripheral_RequestSense(ScsiPeripheral_Device *dev, ScsiPeripheral_RequestSenseRequest *request,ScsiPeripheral_Response *response)](#oh_scsiperipheral_requestsense) | 获取sense data(SCSI设备返回给主机的信息,用于报告设备的状态、错误信息以及诊断信息)。 |
35| [int32_t OH_ScsiPeripheral_Read10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)](#oh_scsiperipheral_read10) | 从指定逻辑块读取数据。 |
36| [int32_t OH_ScsiPeripheral_Write10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)](#oh_scsiperipheral_write10) | 写数据到设备的指定逻辑块。 |
37| [int32_t OH_ScsiPeripheral_Verify10(ScsiPeripheral_Device *dev, ScsiPeripheral_VerifyRequest *request,ScsiPeripheral_Response *response)](#oh_scsiperipheral_verify10) | 校验指定逻辑块。 |
38| [int32_t OH_ScsiPeripheral_SendRequestByCdb(ScsiPeripheral_Device *dev, ScsiPeripheral_Request *request,ScsiPeripheral_Response *response)](#oh_scsiperipheral_sendrequestbycdb) | 以CDB(Command Descriptor Block)方式发送SCSI命令。 |
39| [int32_t OH_ScsiPeripheral_CreateDeviceMemMap(ScsiPeripheral_Device *dev, size_t size,ScsiPeripheral_DeviceMemMap **devMmap)](#oh_scsiperipheral_createdevicememmap) | 创建缓冲区。请在缓冲区使用完后,调用[OH_ScsiPeripheral_DestroyDeviceMemMap](capi-scsi-peripheral-api-h.md#oh_scsiperipheral_destroydevicememmap)销毁缓冲区,否则会造成资源泄露。 |
40| [int32_t OH_ScsiPeripheral_DestroyDeviceMemMap(ScsiPeripheral_DeviceMemMap *devMmap)](#oh_scsiperipheral_destroydevicememmap) | 销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄露。 |
41| [int32_t OH_ScsiPeripheral_ParseBasicSenseInfo(uint8_t *senseData, uint8_t senseDataLen,ScsiPeripheral_BasicSenseInfo *senseInfo)](#oh_scsiperipheral_parsebasicsenseinfo) | 解析基本的sense data,包括Information、Command specific information、Sense key specific字段。 |
42
43## 函数说明
44
45### OH_ScsiPeripheral_Init()
46
47```
48int32_t OH_ScsiPeripheral_Init(void)
49```
50
51**描述**
52
53初始化SCSI Peripheral DDK。
54
55**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
56
57**起始版本:** 18
58
59**返回:**
60
61| 类型 | 说明 |
62| -- | -- |
63| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 初始化DDK失败。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。 |
64
65### OH_ScsiPeripheral_Release()
66
67```
68int32_t OH_ScsiPeripheral_Release(void)
69```
70
71**描述**
72
73释放SCSI Peripheral DDK。
74
75**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
76
77**起始版本:** 18
78
79**返回:**
80
81| 类型 | 说明 |
82| -- | -- |
83| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。 |
84
85### OH_ScsiPeripheral_Open()
86
87```
88int32_t OH_ScsiPeripheral_Open(uint64_t deviceId, uint8_t interfaceIndex, ScsiPeripheral_Device **dev)
89```
90
91**描述**
92
93打开deviceId和interfaceIndex指定的SCSI设备。
94
95**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
96
97**起始版本:** 18
98
99
100**参数:**
101
102| 参数项                             | 描述 |
103|---------------------------------| -- |
104| uint64_t deviceId               | 设备ID,代表要操作的设备。 |
105| uint8_t interfaceIndex          |  接口索引,对应SCSI设备的接口。 |
106| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) **dev | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。 |
107
108**返回:**
109
110| 类型 | 说明 |
111| -- | -- |
112| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生IO错误。<br>         [SCSIPERIPHERAL_DDK_DEVICE_NOT_FOUND](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 通过deviceId和interfaceIndex找不到设备。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
113
114### OH_ScsiPeripheral_Close()
115
116```
117int32_t OH_ScsiPeripheral_Close(ScsiPeripheral_Device **dev)
118```
119
120**描述**
121
122关闭SCSI设备。
123
124**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
125
126**起始版本:** 18
127
128
129**参数:**
130
131| 参数项 | 描述 |
132| -- | -- |
133| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) **dev | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。 |
134
135**返回:**
136
137| 类型 | 说明 |
138| -- | -- |
139| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。 |
140
141### OH_ScsiPeripheral_TestUnitReady()
142
143```
144int32_t OH_ScsiPeripheral_TestUnitReady(ScsiPeripheral_Device *dev, ScsiPeripheral_TestUnitReadyRequest *request,ScsiPeripheral_Response *response)
145```
146
147**描述**
148
149检查逻辑单元是否已经准备好。
150
151**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
152
153**起始版本:** 18
154
155
156**参数:**
157
158| 参数项                                                                                         | 描述                                                                                                                     |
159|---------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
160| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                                  | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                                                |
161| [ScsiPeripheral_TestUnitReadyRequest](capi-scsiperipheralddk-scsiperipheral-testunitreadyrequest.md) *request | 逻辑单元检查命令(test unit ready)的请求信息,详情参见[ScsiPeripheral_TestUnitReadyRequest](capi-scsiperipheralddk-scsiperipheral-testunitreadyrequest.md)。 |
162| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response      | 逻辑单元检查命令(test unit ready)的响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。       |
163
164**返回:**
165
166| 类型 | 说明 |
167| -- | -- |
168| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、request为空或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
169
170### OH_ScsiPeripheral_Inquiry()
171
172```
173int32_t OH_ScsiPeripheral_Inquiry(ScsiPeripheral_Device *dev, ScsiPeripheral_InquiryRequest *request,ScsiPeripheral_InquiryInfo *inquiryInfo, ScsiPeripheral_Response *response)
174```
175
176**描述**
177
178查询SCSI设备的基本信息。
179
180**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
181
182**起始版本:** 18
183
184
185**参数:**
186
187| 参数项                                                                                    | 描述                                                                                                   |
188|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
189| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                             | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                              |
190| [ScsiPeripheral_InquiryRequest](capi-scsiperipheralddk-scsiperipheral-inquiryrequest.md) *request        | inquiry命令的请求信息,详情参见[ScsiPeripheral_InquiryRequest](capi-scsiperipheralddk-scsiperipheral-inquiryrequest.md)。           |
191| [ScsiPeripheral_InquiryInfo](capi-scsiperipheralddk-scsiperipheral-inquiryinfo.md) *inquiryInfo          | inquiry命令返回的查询信息,详情参见[ScsiPeripheral_InquiryInfo](capi-scsiperipheralddk-scsiperipheral-inquiryinfo.md)。               |
192| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response | inquiry命令返回的原始响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。 |
193
194**返回:**
195
196| 类型 | 说明 |
197| -- | -- |
198| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、 request为空、inquiryInfo 为空、inquiryInfo->data或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
199
200### OH_ScsiPeripheral_ReadCapacity10()
201
202```
203int32_t OH_ScsiPeripheral_ReadCapacity10(ScsiPeripheral_Device *dev, ScsiPeripheral_ReadCapacityRequest *request,ScsiPeripheral_CapacityInfo *capacityInfo, ScsiPeripheral_Response *response)
204```
205
206**描述**
207
208获取SCSI设备的容量信息。
209
210**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
211
212**起始版本:** 18
213
214
215**参数:**
216
217| 参数项                                                                                       | 描述                                                                                                         |
218|-------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
219| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                                | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                                    |
220| [ScsiPeripheral_ReadCapacityRequest](capi-scsiperipheralddk-scsiperipheral-readcapacityrequest.md) *request | read capacity命令的请求信息,详情参见[ScsiPeripheral_ReadCapacityRequest](capi-scsiperipheralddk-scsiperipheral-readcapacityrequest.md)。 |
221| [ScsiPeripheral_CapacityInfo](capi-scsiperipheralddk-scsiperipheral-capacityinfo.md) *capacityInfo          | read capacity命令返回的容量信息,详情参见[ScsiPeripheral_CapacityInfo](capi-scsiperipheralddk-scsiperipheral-capacityinfo.md)。             |
222| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response    | read capacity命令返回的原始响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。 |
223
224**返回:**
225
226| 类型 | 说明 |
227| -- | -- |
228| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、 request为空、capacityInfo为空或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
229
230### OH_ScsiPeripheral_RequestSense()
231
232```
233int32_t OH_ScsiPeripheral_RequestSense(ScsiPeripheral_Device *dev, ScsiPeripheral_RequestSenseRequest *request,ScsiPeripheral_Response *response)
234```
235
236**描述**
237
238获取sense data(SCSI设备返回给主机的信息,用于报告设备的状态、错误信息以及诊断信息)。
239
240**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
241
242**起始版本:** 18
243
244
245**参数:**
246
247| 参数项                                                                                       | 描述                                                                                                         |
248|-------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
249| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                                | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                                    |
250| [ScsiPeripheral_RequestSenseRequest](capi-scsiperipheralddk-scsiperipheral-requestsenserequest.md) *request | request sense命令的请求信息,详情参见[ScsiPeripheral_RequestSenseRequest](capi-scsiperipheralddk-scsiperipheral-requestsenserequest.md)。 |
251| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response    | request sense命令返回的响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。   |
252
253**返回:**
254
255| 类型 | 说明 |
256| -- | -- |
257| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、 request为空或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
258
259### OH_ScsiPeripheral_Read10()
260
261```
262int32_t OH_ScsiPeripheral_Read10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)
263```
264
265**描述**
266
267从指定逻辑块读取数据。
268
269**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
270
271**起始版本:** 18
272
273
274**参数:**
275
276| 参数项                                                                                     | 描述                                                                                              |
277|-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------|
278| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                              | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                         |
279| [ScsiPeripheral_IORequest](capi-scsiperipheralddk-scsiperipheral-iorequest.md) *request | read命令的请求信息,详情参见[ScsiPeripheral_IORequest](capi-scsiperipheralddk-scsiperipheral-iorequest.md)。 |
280| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response  | read命令返回的响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。 |
281
282**返回:**
283
284| 类型 | 说明 |
285| -- | -- |
286| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、 request为空、request->data或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
287
288### OH_ScsiPeripheral_Write10()
289
290```
291int32_t OH_ScsiPeripheral_Write10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)
292```
293
294**描述**
295
296写数据到设备的指定逻辑块。
297
298**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
299
300**起始版本:** 18
301
302
303**参数:**
304
305| 参数项                                                                                     | 描述                                                                                               |
306|-----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
307| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                              | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                          |
308| [ScsiPeripheral_IORequest](capi-scsiperipheralddk-scsiperipheral-iorequest.md) *request | write命令的请求信息,详情参见[ScsiPeripheral_IORequest](capi-scsiperipheralddk-scsiperipheral-iorequest.md)。 |
309| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response  | write命令返回的响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。 |
310
311**返回:**
312
313| 类型 | 说明 |
314| -- | -- |
315| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、 request为空、request->data为空或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
316
317### OH_ScsiPeripheral_Verify10()
318
319```
320int32_t OH_ScsiPeripheral_Verify10(ScsiPeripheral_Device *dev, ScsiPeripheral_VerifyRequest *request,ScsiPeripheral_Response *response)
321```
322
323**描述**
324
325校验指定逻辑块。
326
327**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
328
329**起始版本:** 18
330
331
332**参数:**
333
334| 参数项                                                                                    | 描述                                                                                                |
335|----------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
336| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                             | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                           |
337| [ScsiPeripheral_VerifyRequest](capi-scsiperipheralddk-scsiperipheral-verifyrequest.md) *request          | verify命令的请求信息,详情参见[ScsiPeripheral_VerifyRequest](capi-scsiperipheralddk-scsiperipheral-verifyrequest.md)。           |
338| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response | verify命令返回的响应信息,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。 |
339
340**返回:**
341
342| 类型 | 说明 |
343| -- | -- |
344| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、request为空或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
345
346### OH_ScsiPeripheral_SendRequestByCdb()
347
348```
349int32_t OH_ScsiPeripheral_SendRequestByCdb(ScsiPeripheral_Device *dev, ScsiPeripheral_Request *request,ScsiPeripheral_Response *response)
350```
351
352**描述**
353
354以CDB(Command Descriptor Block)方式发送SCSI命令。
355
356**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
357
358**起始版本:** 18
359
360
361**参数:**
362
363| 参数项                                                                                    | 描述                                                                                   |
364|----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
365| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                             | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                              |
366| [ScsiPeripheral_Request](capi-scsiperipheralddk-scsiperipheral-request.md) *request    | 请求,详情参见[ScsiPeripheral_Request](capi-scsiperipheralddk-scsiperipheral-request.md)。   |
367| [ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md) *response | 响应,详情参见[ScsiPeripheral_Response](capi-scsiperipheralddk-scsiperipheral-response.md)。 |
368
369**返回:**
370
371| 类型 | 说明 |
372| -- | -- |
373| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_NO_PERM](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 权限校验失败。<br>         [SCSIPERIPHERAL_DDK_INIT_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 未初始化DDK。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空、 request为空、request->data为<br>         空、request->cdbLength为0或者response为空。<br>         [SCSIPERIPHERAL_DDK_SERVICE_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 与DDK服务通信失败。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。<br>         [SCSIPERIPHERAL_DDK_IO_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) DDK发生I/O错误。<br>         [SCSIPERIPHERAL_DDK_TIMEOUT](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 传输超时。<br>         [SCSIPERIPHERAL_DDK_INVALID_OPERATION](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 不支持该操作。 |
374
375### OH_ScsiPeripheral_CreateDeviceMemMap()
376
377```
378int32_t OH_ScsiPeripheral_CreateDeviceMemMap(ScsiPeripheral_Device *dev, size_t size,ScsiPeripheral_DeviceMemMap **devMmap)
379```
380
381**描述**
382
383创建缓冲区。请在缓冲区使用完后,调用[OH_ScsiPeripheral_DestroyDeviceMemMap](capi-scsi-peripheral-api-h.md#oh_scsiperipheral_destroydevicememmap)销毁缓冲区,否则会造成资源泄露。
384
385**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
386
387**起始版本:** 18
388
389
390**参数:**
391
392| 参数项                                                                                            | 描述                                                                                                          |
393|------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
394| [ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md) *dev                                                                     | 设备句柄,详情参见[ScsiPeripheral_Device](capi-scsiperipheralddk-scsiperipheral-device.md)。                                                                     |
395| size_t size                                                                                    | 缓冲区的大小。                                                                                                     |
396| [ScsiPeripheral_DeviceMemMap](capi-scsiperipheralddk-scsiperipheral-devicememmap.md) **devMmap | 创建的缓冲区通过该参数返回给调用者,详情参见[ScsiPeripheral_DeviceMemMap](capi-scsiperipheralddk-scsiperipheral-devicememmap.md)。 |
397
398**返回:**
399
400| 类型 | 说明 |
401| -- | -- |
402| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) dev为空或devMmap为空。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。 |
403
404### OH_ScsiPeripheral_DestroyDeviceMemMap()
405
406```
407int32_t OH_ScsiPeripheral_DestroyDeviceMemMap(ScsiPeripheral_DeviceMemMap *devMmap)
408```
409
410**描述**
411
412销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄露。
413
414**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
415
416**起始版本:** 18
417
418
419**参数:**
420
421| 参数项                                                                                           | 描述                                                                                                                                                                                |
422|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
423| [ScsiPeripheral_DeviceMemMap](capi-scsiperipheralddk-scsiperipheral-devicememmap.md) *devMmap | 待销毁的由[OH_ScsiPeripheral_CreateDeviceMemMa](#oh_scsiperipheral_createdevicememmap)创建的缓冲区,详情参见[ScsiPeripheral_DeviceMemMap](capi-scsiperipheralddk-scsiperipheral-devicememmap.md)。 |
424
425**返回:**
426
427| 类型 | 说明 |
428| -- | -- |
429| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) devMmap为空。<br>         [SCSIPERIPHERAL_DDK_MEMORY_ERROR](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 内存操作失败。 |
430
431### OH_ScsiPeripheral_ParseBasicSenseInfo()
432
433```
434int32_t OH_ScsiPeripheral_ParseBasicSenseInfo(uint8_t *senseData, uint8_t senseDataLen,ScsiPeripheral_BasicSenseInfo *senseInfo)
435```
436
437**描述**
438
439解析基本的sense data,包括Information、Command specific information、Sense key specific字段。
440
441**需要权限:** ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
442
443**起始版本:** 18
444
445
446**参数:**
447
448| 参数项 | 描述 |
449| -- | -- |
450| uint8_t *senseData | 待解析的sense data。 |
451| uint8_t senseDataLen | sense data长度。 |
452| [ScsiPeripheral_BasicSenseInfo](capi-scsiperipheralddk-scsiperipheral-basicsenseinfo.md) *senseInfo | 用于保存解析后的基本信息,详情参见[ScsiPeripheral_BasicSenseInfo](capi-scsiperipheralddk-scsiperipheral-basicsenseinfo.md)。 |
453
454**返回:**
455
456| 类型 | 说明 |
457| -- | -- |
458| int32_t | [SCSIPERIPHERAL_DDK_SUCCESS](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) 调用接口成功。<br>         [SCSIPERIPHERAL_DDK_INVALID_PARAMETER](capi-scsi-peripheral-types-h.md#scsiperipheral_ddkerrcode) senseData格式不是描述符或固定格式、senseDataLen小于<br>         SCSIPERIPHERAL_MIN_DESCRIPTOR_FORMAT_SENSE或者senseDataLen小于SCSIPERIPHERAL_MIN_FIXED_FORMAT_SENSE。 |
459
460
461