openharmony 鸿蒙 capi-scsi-peripheral-api-h

2026-08-25 浏览 (1)

scsi_peripheral_api.h

概述

声明用于主机侧访问SCSI设备的SCSI Peripheral DDK接口。

引用文件: <scsi_peripheral/scsi_peripheral_api.h>

库: libscsi.z.so

系统能力: SystemCapability.Driver.SCSI.Extension

起始版本: 18

相关模块: ScsiPeripheralDDK

汇总

函数

名称描述
int32_t OH_ScsiPeripheral_Init(void)初始化SCSI Peripheral DDK。
int32_t OH_ScsiPeripheral_Release(void)释放SCSI Peripheral DDK。
int32_t OH_ScsiPeripheral_Open(uint64_t deviceId, uint8_t interfaceIndex, ScsiPeripheral_Device **dev)打开deviceId和interfaceIndex指定的SCSI设备。其中,deviceId可以通过USB设备的总线编号左移32位后、同其设备地址进行或运算得到,interfaceIndex为需要打开的USB接口的索引值。
int32_t OH_ScsiPeripheral_Close(ScsiPeripheral_Device **dev)关闭SCSI设备。
int32_t OH_ScsiPeripheral_TestUnitReady(ScsiPeripheral_Device *dev, ScsiPeripheral_TestUnitReadyRequest *request,ScsiPeripheral_Response *response)检查逻辑单元是否已经准备好。
int32_t OH_ScsiPeripheral_Inquiry(ScsiPeripheral_Device *dev, ScsiPeripheral_InquiryRequest *request,ScsiPeripheral_InquiryInfo *inquiryInfo, ScsiPeripheral_Response *response)查询SCSI设备的基本信息。
int32_t OH_ScsiPeripheral_ReadCapacity10(ScsiPeripheral_Device *dev, ScsiPeripheral_ReadCapacityRequest *request,ScsiPeripheral_CapacityInfo *capacityInfo, ScsiPeripheral_Response *response)获取SCSI设备的容量信息。
int32_t OH_ScsiPeripheral_RequestSense(ScsiPeripheral_Device *dev, ScsiPeripheral_RequestSenseRequest *request,ScsiPeripheral_Response *response)获取sense data(SCSI设备返回给主机的信息,用于报告设备的状态、错误信息以及诊断信息)。
int32_t OH_ScsiPeripheral_Read10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)从指定逻辑块读取数据。
int32_t OH_ScsiPeripheral_Write10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)写数据到设备的指定逻辑块。
int32_t OH_ScsiPeripheral_Verify10(ScsiPeripheral_Device *dev, ScsiPeripheral_VerifyRequest *request,ScsiPeripheral_Response *response)校验指定逻辑块。
int32_t OH_ScsiPeripheral_SendRequestByCdb(ScsiPeripheral_Device *dev, ScsiPeripheral_Request *request,ScsiPeripheral_Response *response)以CDB(Command Descriptor Block)方式发送SCSI命令。
int32_t OH_ScsiPeripheral_CreateDeviceMemMap(ScsiPeripheral_Device *dev, size_t size,ScsiPeripheral_DeviceMemMap **devMmap)创建缓冲区。请在缓冲区使用完后,调用OH_ScsiPeripheral_DestroyDeviceMemMap销毁缓冲区,否则会造成资源泄漏。
int32_t OH_ScsiPeripheral_DestroyDeviceMemMap(ScsiPeripheral_DeviceMemMap *devMmap)销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄漏。
int32_t OH_ScsiPeripheral_ParseBasicSenseInfo(uint8_t *senseData, uint8_t senseDataLen,ScsiPeripheral_BasicSenseInfo *senseInfo)解析基本的sense data,包括Information、Command specific information、Sense key specific字段。

函数说明

OH_ScsiPeripheral_Init()

int32_t OH_ScsiPeripheral_Init(void)

描述

初始化SCSI Peripheral DDK。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 初始化DDK失败。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。

OH_ScsiPeripheral_Release()

int32_t OH_ScsiPeripheral_Release(void)

描述

释放SCSI Peripheral DDK。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。

OH_ScsiPeripheral_Open()

int32_t OH_ScsiPeripheral_Open(uint64_t deviceId, uint8_t interfaceIndex, ScsiPeripheral_Device **dev)

描述

打开deviceId和interfaceIndex指定的SCSI设备。其中,deviceId可以通过USB设备的总线编号左移32位后、同其设备地址进行或运算得到,interfaceIndex为需要打开的USB接口的索引值。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
uint64_t deviceId设备ID,代表要操作的设备。
uint8_t interfaceIndex接口索引,对应SCSI设备的接口。
ScsiPeripheral_Device **dev设备句柄,详情参见ScsiPeripheral_Device

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空或*dev为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生IO错误。
SCSIPERIPHERAL_DDK_DEVICE_NOT_FOUND 通过deviceId和interfaceIndex找不到设备。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_Close()

int32_t OH_ScsiPeripheral_Close(ScsiPeripheral_Device **dev)

描述

关闭SCSI设备。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device **dev设备句柄,详情参见ScsiPeripheral_Device

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空或*dev为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。

OH_ScsiPeripheral_TestUnitReady()

int32_t OH_ScsiPeripheral_TestUnitReady(ScsiPeripheral_Device *dev, ScsiPeripheral_TestUnitReadyRequest *request,ScsiPeripheral_Response *response)

描述

检查逻辑单元是否已经准备好。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_TestUnitReadyRequest *request逻辑单元检查命令(test unit ready)的请求信息,详情参见ScsiPeripheral_TestUnitReadyRequest
ScsiPeripheral_Response *response逻辑单元检查命令(test unit ready)的响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、request为空或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_Inquiry()

int32_t OH_ScsiPeripheral_Inquiry(ScsiPeripheral_Device *dev, ScsiPeripheral_InquiryRequest *request,ScsiPeripheral_InquiryInfo *inquiryInfo, ScsiPeripheral_Response *response)

描述

查询SCSI设备的基本信息。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_InquiryRequest *requestinquiry命令的请求信息,详情参见ScsiPeripheral_InquiryRequest
ScsiPeripheral_InquiryInfo *inquiryInfoinquiry命令返回的查询信息,详情参见ScsiPeripheral_InquiryInfo
ScsiPeripheral_Response *responseinquiry命令返回的原始响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、 request为空、inquiryInfo 为空、inquiryInfo->data或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_ReadCapacity10()

int32_t OH_ScsiPeripheral_ReadCapacity10(ScsiPeripheral_Device *dev, ScsiPeripheral_ReadCapacityRequest *request,ScsiPeripheral_CapacityInfo *capacityInfo, ScsiPeripheral_Response *response)

描述

获取SCSI设备的容量信息。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_ReadCapacityRequest *requestread capacity命令的请求信息,详情参见ScsiPeripheral_ReadCapacityRequest
ScsiPeripheral_CapacityInfo *capacityInforead capacity命令返回的容量信息,详情参见ScsiPeripheral_CapacityInfo
ScsiPeripheral_Response *responseread capacity命令返回的原始响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、 request为空、capacityInfo为空或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_RequestSense()

int32_t OH_ScsiPeripheral_RequestSense(ScsiPeripheral_Device *dev, ScsiPeripheral_RequestSenseRequest *request,ScsiPeripheral_Response *response)

描述

获取sense data(SCSI设备返回给主机的信息,用于报告设备的状态、错误信息以及诊断信息)。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_RequestSenseRequest *requestRequest Sense命令的请求信息,详情参见ScsiPeripheral_RequestSenseRequest
ScsiPeripheral_Response *responseRequest Sense命令返回的响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、 request为空或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_Read10()

int32_t OH_ScsiPeripheral_Read10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)

描述

从指定逻辑块读取数据。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_IORequest *requestread命令的请求信息,详情参见ScsiPeripheral_IORequest
ScsiPeripheral_Response *responseread命令返回的响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、 request为空、request->data或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_Write10()

int32_t OH_ScsiPeripheral_Write10(ScsiPeripheral_Device *dev, ScsiPeripheral_IORequest *request,ScsiPeripheral_Response *response)

描述

写数据到设备的指定逻辑块。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_IORequest *requestwrite命令的请求信息,详情参见ScsiPeripheral_IORequest
ScsiPeripheral_Response *responsewrite命令返回的响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、 request为空、request->data为空或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_Verify10()

int32_t OH_ScsiPeripheral_Verify10(ScsiPeripheral_Device *dev, ScsiPeripheral_VerifyRequest *request,ScsiPeripheral_Response *response)

描述

校验指定逻辑块。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_VerifyRequest *requestverify命令的请求信息,详情参见ScsiPeripheral_VerifyRequest
ScsiPeripheral_Response *responseverify命令返回的响应信息,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、request为空或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_SendRequestByCdb()

int32_t OH_ScsiPeripheral_SendRequestByCdb(ScsiPeripheral_Device *dev, ScsiPeripheral_Request *request,ScsiPeripheral_Response *response)

描述

以CDB(Command Descriptor Block)方式发送SCSI命令。

需要权限: ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
ScsiPeripheral_Request *request请求,详情参见ScsiPeripheral_Request
ScsiPeripheral_Response *response响应,详情参见ScsiPeripheral_Response

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_NO_PERM 权限校验失败。
SCSIPERIPHERAL_DDK_INIT_ERROR 未初始化DDK。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、 request为空、request->data为
空、request->cdbLength为0或者response为空。
SCSIPERIPHERAL_DDK_SERVICE_ERROR 与DDK服务通信失败。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。
SCSIPERIPHERAL_DDK_IO_ERROR DDK发生I/O错误。
SCSIPERIPHERAL_DDK_TIMEOUT 传输超时。
SCSIPERIPHERAL_DDK_INVALID_OPERATION 不支持该操作。

OH_ScsiPeripheral_CreateDeviceMemMap()

int32_t OH_ScsiPeripheral_CreateDeviceMemMap(ScsiPeripheral_Device *dev, size_t size,ScsiPeripheral_DeviceMemMap **devMmap)

描述

创建缓冲区。请在缓冲区使用完后,调用OH_ScsiPeripheral_DestroyDeviceMemMap销毁缓冲区,否则会造成资源泄漏。

起始版本: 18

参数:

参数项描述
ScsiPeripheral_Device *dev设备句柄,详情参见ScsiPeripheral_Device
size_t size缓冲区的大小。
ScsiPeripheral_DeviceMemMap **devMmap创建的缓冲区通过该参数返回给调用者,详情参见ScsiPeripheral_DeviceMemMap

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER dev为空、devMmap为空或*devMmap为空。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。

OH_ScsiPeripheral_DestroyDeviceMemMap()

int32_t OH_ScsiPeripheral_DestroyDeviceMemMap(ScsiPeripheral_DeviceMemMap *devMmap)

描述

销毁缓冲区。请在缓冲区使用完后及时销毁缓冲区,否则会造成资源泄漏。

起始版本: 18

参数:

参数项描述
ScsiPeripheral_DeviceMemMap *devMmap待销毁的由OH_ScsiPeripheral_CreateDeviceMemMap创建的缓冲区,详情参见ScsiPeripheral_DeviceMemMap

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER devMmap为空。
SCSIPERIPHERAL_DDK_MEMORY_ERROR 内存操作失败。

OH_ScsiPeripheral_ParseBasicSenseInfo()

int32_t OH_ScsiPeripheral_ParseBasicSenseInfo(uint8_t *senseData, uint8_t senseDataLen,ScsiPeripheral_BasicSenseInfo *senseInfo)

描述

解析基本的sense data,包括Information、Command specific information、Sense key specific字段。

起始版本: 18

参数:

参数项描述
uint8_t *senseData待解析的sense data。
uint8_t senseDataLensense data长度。
ScsiPeripheral_BasicSenseInfo *senseInfo用于保存解析后的基本信息,详情参见ScsiPeripheral_BasicSenseInfo

返回:

类型说明
int32_tSCSIPERIPHERAL_DDK_SUCCESS 调用接口成功。
SCSIPERIPHERAL_DDK_INVALID_PARAMETER senseData格式不是描述符或固定格式、senseDataLen小于
SCSIPERIPHERAL_MIN_DESCRIPTOR_FORMAT_SENSE或者senseDataLen小于SCSIPERIPHERAL_MIN_FIXED_FORMAT_SENSE

你可能感兴趣的鸿蒙文章

openharmony 鸿蒙 capi-scsiperipheralddk-scsiperipheral-request

openharmony 鸿蒙 capi-usbddk-usbconfigdescriptor

openharmony 鸿蒙 capi-hidddk

openharmony 鸿蒙 capi-usbddk

openharmony 鸿蒙 capi-hidddk-hid-absaxesarray

openharmony 鸿蒙 capi-scsiperipheralddk-scsiperipheral-response

openharmony 鸿蒙 capi-hidddk-hid-relaxesarray

openharmony 鸿蒙 js-apis-driver-deviceManager

openharmony 鸿蒙 capi-hidddk-hid-eventtypearray

openharmony 鸿蒙 capi-baseddk

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/1cMaXimR