我在win7 32位作業系統下應用Adaptec ASPI撰寫磁帶機程式,在詢問磁帶機是否準備好的時候,程式不反應,一直是等待,即ss_penging,而同一款別的商業軟體,也是用bcb6,應用Adaptec ASPI撰寫卻可以正常使用,說明光纖卡的驅動和ASPI本身應該沒問題。我的這個程式在有的win 7 32位作業系統的機器下可以正常使用,有些機器下面不行,不知道是怎么回事。代碼如下:
is_ready(int iunit, int scsi_id, int haid)
{
int srb_len = sizeof(SRB_ex);
SRB_ex.SRB_HaId = haid;
SRB_ex.SRB_SenseLen = 44;
SRB_ex.SRB_CDBLen = 6;
SRB_ex.SRB_Cmd = SC_EXEC_SCSI_CMD;
SRB_ex.SRB_Flags = SRB_DIR_IN;
SRB_ex.SRB_Target = scsi_id;
SRB_ex.CDBByte[0] = 0;
SRB_ex.CDBByte[1] = scsi_id<<5;
DWORD ASPIStatus;
ASPIStatus = SendEx( (LPSRBEX)&SRB_ex );
while(SRB_ex.SRB_Status == 0)
{
}
if(SRB_ex.SRB_Status!= 1) return SRB_ex.SRB_Status;
return 0;
}
程式一直在這個地方死回圈
while(SRB_ex.SRB_Status == 0)
{
}
請專家們給指點一下,謝謝了!
uj5u.com熱心網友回復:
加個sleep幾毫秒有沒有用?uj5u.com熱心網友回復:
不行啊,還是一直死鎖啊
正常的情況 運行SendEx( (LPSRBEX)&SRB_ex );之后立刻就有回傳了。uj5u.com熱心網友回復:
可能是你發送的引數不對吧uj5u.com熱心網友回復:
搞不清啊,這個程式在有的機器上可以正常運行,在有的機器上就用不起來,不知道什么問題。uj5u.com熱心網友回復:
do{SendEx( (LPSRBEX)&SRB_ex );
} while(SRB_ex.SRB_Status == 0);
uj5u.com熱心網友回復:
不懂 Adaptec ASPI瞎猜的
uj5u.com熱心網友回復:
可能在有的機器上它的回傳就是0,所以你的代碼死回圈了,你難道不應該先判斷一下
ASPIStatus = SendEx( (LPSRBEX)&SRB_ex );
這個ASPIStatus么
uj5u.com熱心網友回復:
搞不清啊,這個程式在有的機器上可以正常運行,在有的機器上就用不起來,不知道什么問題。
可能是你發送的引數不對吧
可能在有的機器上它的回傳就是0,所以你的代碼死回圈了,你難道不應該先判斷一下
ASPIStatus = SendEx( (LPSRBEX)&SRB_ex );
這個ASPIStatus么
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30825.html
上一篇:求大佬注釋下每行的意思
下一篇:php基礎
