Mac系统上给USB设备发送SCSI自定义命令

lwei2 lwei2 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位大佬,请问在Mac上给USB发送SCSI命令,是使用哪个结构体?SCSICmd_INQUIRY_StandardDataAll还是SCSI_Sense_Data,又怎么实现发送呢?在Linux下会有一个结构体专门处理这事,代码如下:

sg_io_hdr_t p_io_hdr;
memset(&p_io_hdr,0x00,sizeof(sg_io_hdr_t));

p_io_hdr.interface_id = 'S';
p_io_hdr.flags = SG_FLAG_LUN_INHIBIT;

if(aDataIn == DATA_USB_TO_HOST)
p_io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
else
p_io_hdr.dxfer_direction = SG_DXFER_TO_DEV;

p_io_hdr.cmd_len = aCBDLen; //指向 SCSI 命令的 cmdp 的字节长度
p_io_hdr.cmdp = (unsigned char*)aCBD; //指向将要执行的 SCSI 命令的指针
p_io_hdr.dxfer_len = aDataLen; //数据传输的用户内存的长度
p_io_hdr.dxferp = aData; //指向数据传输时长度至少为 dxfer_len 字节的用户内存的指针


int ret = ioctl(aHandle,SG_IO,&p_io_hdr);
if(ret<0 || p_io_hdr.driver_status != 0)
return -1;
怎么把这段代码用Mac系统上的结构体写出来呢?
...全文

相关推荐

SCSI2SD-util-V6:SCSI2SD V6配置实用程序的本机Mac(可可)版本

SCSI2SD-util-V6本机+通用Mac App(可可) V6板卡的基于Xcode的SCSI2SD应用程序的新存储库。 为Mac OS 10.6构建: 您必须打开MainMenu.xib AS源代码并执行以下操作: 到处都将translatesAutoresizingMaskIntoConstraints =“是”替换为translatesAutoresizingMaskIntoConstraints =“是” 将useAutoLayout =“ NO”替换为useAutoLayout =“ YES” disableAutolayout.sh会为您执行此操作。 您需要将其作为“ ./disableAutolayout.sh SCSI2SD-util”来调用 由于某种原因,如果您将该文件作为界面生成器文件打开,它将被重写,并且无法通过GUI再次关闭这些标志。 适用于Linux

按剑四顾

Mac系统中USB非HID设备的读写操作教程

通用串行总线(USB)是一种广泛用于连接外部设备到计算机、游戏机和移动设备的通信接口。非HID(人机接口设备)USB设备包括了除了键盘、鼠标等输入设备外的其它所有类型USB设备,如数据存储设备、音频设备、网络设备等。它们通常执行更复杂的功能,并且在连接时需要特定的驱动程序才能被系统识别和使用。IOKit是苹果操作系统中用于硬件设备驱动开发的一套框架。它定义了一组用于描述设备行为和硬件抽象的C++类。IOKit的架构是基于驱动对象的模型,这些对象被称为”IOKit家族”。

豪欧巴

USB转接器原理大揭秘:从UART到SCSI的协议转换

CDC ACM 设备典型采用2 个接口Interface 0: 通信接口(Communication, class=02, subclass=02=ACM)├─ EP0: 类请求(见下)└─ Interrupt IN EP: 通知(串口状态变化/收包通知)Interface 1: 数据接口(CDC Data, class=0x0A)└─ Bulk OUT + Bulk IN EP: 真正的字节流。

菩提本无树X

USB MSC BOT Spec_usb_

USB MSC BOT Specifiations

摇滚死兔子

STM32 USB模拟一个串口和U盘存储器复合设备

STM32 USB模拟一个串口和U盘存储器复合设备,经调试测试通过,稍作修改,可以应用在产品上。

u010942176
评论 6
收藏 已收藏
分享
返回顶部
lwei2
iOS 29,038 成员 12,459 内容