/**
* 写磁盘扇区命令
* @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,如需转载请自行联系原作者