基于OHCI的USB主机 —— UFI写扇区代码

本文介绍了一个用于写磁盘扇区的UFI命令实现细节,包括设置Bulk-Only传输协议参数、UFI命令参数及通过Bulk端口发送写命令的过程。
/**

 写磁盘扇区命令

 * @param sect 物理扇区号

 * @param *buf 数据缓冲区指针

 * @return 0 - 成功

 */

short ufiWriteSect(DWORD sect, BYTE *buf)

{

    WRITE_10 *write10;

    CBW *cbw;

 

    //设置Bulk-Only协议参数

    cbw = &ufiCmdRunning.cbw;

    cbw->dCBW_Signature = CBW_SIGNATURE;

    cbw->dCBW_Tag = 0x60a624de;

    cbw->dCBW_DataXferLen = 512;

    cbw->bCBW_Flag=0x00;

    cbw->bCBW_LUN=0;

    cbw->bCBW_CDBLen = 16;//sizeof(CDB_RBC);

 

    //设置UFI命令参数

    write10 = &(cbw->cdbRBC.ufiWrite10);

    write10->OperationCode = 0x2A;

    write10->LBA_0 = byteInInt(sect, 0);

    write10->LBA_1 = byteInInt(sect, 1);

    write10->LBA_2 = byteInInt(sect, 2);

    write10->LBA_3 = byteInInt(sect, 3);

    write10->XferLen_0 = 0x01;

    write10->XferLen_1 = 0x00;

 

    //设置状态扫描函数所需要的参数

    ufiCmdRunning.funUfiCmd = bulkWrite;

    ufiCmdRunning.pBuf = buf;

    ufiCmdRunning.state = UFI_STATE_BEGIN;

 

    //通过Bulk端口发送写命令

    bulkWrite((unsigned char *)&ufiCmdRunning.cbw, buf, (unsigned char*)&ufiCmdRunning.csw);

 

    return 0;

}





本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/317095,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值