全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3452
推到 Plurk!
推到 Facebook!

使用DeviceIoControl和USB設備傳送數據失敗

尚未結案
c.f
一般會員


發表:3
回覆:0
積分:0
註冊:2003-09-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-15 11:43:51 IP:210.22.xxx.xxx 未訂閱
我剛接手公司的一個產品測試程序進行改進,請看以下代碼,此代碼是用於和MP3 U盤发送命令的其中一個函數,在WIN2000 C BUILDER60下的項目,此段代碼在別人機器上編譯和運行都正常,在我的機器上編譯通過,但運行時此函數返回FALSH,返回的錯誤信息是(簡體WIN2000 "表明兩個修訂級別是不相容的" 繁體WIN2000 "將這兩個修正階層標為不相容"),在別人機器編譯後的執行文件為833K,我的機器的為824K,在我機器上安裝了NTDDK(但不知是否安裝正確,我只是按安裝程序正常流程安裝,沒做其他設置).我己弄了一周,找不出原因,請較各位高手. 函數代碼 BOOL __fastcall TForm1::physics_format(HANDLE hDevice) { char buf[1000]; //printf(" ***** WRITE DATA BUFFER operation *****\n"); SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER sptdwb; ZeroMemory(&sptdwb, sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER)); PUCHAR dataBuffer = &buf[0]; //NULL; IO_SCSI_CAPABILITIES capabilities; sptdwb.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT); sptdwb.sptd.PathId = 0; sptdwb.sptd.TargetId = 1; sptdwb.sptd.Lun = 0; sptdwb.sptd.CdbLength = CDB10GENERIC_LENGTH; sptdwb.sptd.SenseInfoLength = 24; sptdwb.sptd.DataIn = SCSI_IOCTL_DATA_OUT; sptdwb.sptd.DataTransferLength = 0; sptdwb.sptd.TimeOutValue = 60; sptdwb.sptd.DataBuffer = dataBuffer; sptdwb.sptd.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER,ucSenseBuf); sptdwb.sptd.Cdb[0] = 0x81; sptdwb.sptd.Cdb[1] = 0; // Data mode sptdwb.sptd.Cdb[2] = 0x55; //prodect sptdwb.sptd.Cdb[3] = 0xaa; sptdwb.sptd.Cdb[4] = 0x66; sptdwb.sptd.Cdb[5] = 0x99; sptdwb.sptd.Cdb[6] = 0; // Parameter List length sptdwb.sptd.Cdb[7] = 0; // Parameter List length sptdwb.sptd.Cdb[8] = 1; ULONG length = sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER); ULONG returned; BOOL status = DeviceIoControl(hDevice, IOCTL_SCSI_PASS_THROUGH_DIRECT, &sptdwb, length, &sptdwb, length, &returned, FALSE); if (!status) { ShowMessage(SysErrorMessage(GetLastError())); // char ErrorText[400]; // ProcessErrorMessage(ErrorText); } return status; }
系統時間:2024-04-26 22:24:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!