/**
* 寫磁盤扇區命令
* @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;
}
本文出自 “rainman” 博客,請務必保留此出處http://lancelot.blog.51cto.com/393579/317095