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

Vista 中對 PhysicalDrive 的 sector 寫入的問題

答題得分者是:aftcast
davidsun
初階會員


發表:57
回覆:71
積分:25
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-29 23:15:48 IP:218.211.xxx.xxx 訂閱
Greeting ,
之前我已經可以成功的對 physics device 的 logical sector 作讀寫測試,例如:

Write Sector :


[code delphi]
hDev := CreateFile(pChar('\\.\PhysicalDrive' IntToStr(labPhysicalDrive.Tag)), GENERIC_WRITE or GENERIC_READ, 0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);

DwPtr := SetFilePointer(hDev, WriteSectorNum * 512, nil, FILE_BEGIN);
if DwPtr = INVALID_SET_FILE_POINTER then
raise Exception.Create('SetFilePointer : ' SystemErrorMessage);
if not WriteFile(hDev, Buffer[0], edBuferSize.Value * 512, iWrite, nil) then
raise Exception.Create('WriteFile : ' SystemErrorMessage);
WriteSectorNum := WriteSectorNum edBuferSize.Value;
CloseHandle(hDev);

[/code]

因為我的目的要對每一個 sector 作讀寫測試,所以我會有一個迴圈,從 sector 0 開始,一直到最後的 sectors , 所以上面的程式碼中, WriteSectorNum 會一直累加,這程式碼在 XP 工作的很好,但是在 Vista 則不能工作,問題狀況是:

當我寫 sector 0 的時候,很正常,可以寫入,但是要寫入 sector 1 的時候,就出現 Error Numner 5 (在 呼叫 WriteFile API 的時候) , 這是拒絕存取的錯誤,不單是Sector 1, 只要不是 sector 0 的寫入,都會有拒絕存取的錯誤,請問是不是在 Vista 中有不一樣的用法?或者有什麼我沒有注意到的呢?

謝謝您









aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-30 02:06:57 IP:59.115.xxx.xxx 訂閱
請在write之前試著先用DeviceIoControl( ) api配合FSCTL_DISMOUNT_VOLUME控制碼或FSCTL_LOCK_VOLUME碼。

如此可確保資料的一致性並且在vista以後的版本得到SUPPORT。

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2008-09-30 02:08:10, 註解 無‧
davidsun
初階會員


發表:57
回覆:71
積分:25
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-30 02:11:25 IP:218.211.xxx.xxx 訂閱
哇! 凌晨兩點還收到您的指導回覆,真是感恩。我明天試試看,有任何結果,再與大家分享。

謝謝您。

===================引 用 aftcast 文 章===================
請在write之前試著先用DeviceIoControl( ) api配合FSCTL_DISMOUNT_VOLUME控制碼或FSCTL_LOCK_VOLUME碼。

如此可確保資料的一致性並且在vista以後的版本得到SUPPORT。
系統時間:2024-04-26 13:46:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!