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

/**
 * 写磁盘扇区命令
 * @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;
}

你可能感兴趣的:(职场,主机,usb,休闲,ohci)