Mac系统上给USB设备发送SCSI自定义命令
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: 真正的字节流。
USB MSC BOT Spec_usb_
USB MSC BOT Specifiations
STM32 USB模拟一个串口和U盘存储器复合设备
STM32 USB模拟一个串口和U盘存储器复合设备,经调试测试通过,稍作修改,可以应用在产品上。


