win7 writefile寫磁碟失敗解決

2021-07-10 15:47:55 字數 2577 閱讀 6522

情況 1:正要寫入的扇區不位於卷內(空隙塊與分割槽表)。

注意:程式使用卷之外的扇區來儲存元資料。分割槽表也位於卷之外的扇區中。由於這些扇區不受任何檔案系  統的控制,因此沒有理由阻止對這些扇區的訪問。

情況 2:已經通過鎖定請求或解除安裝請求顯式鎖定卷

情況 3:正要寫入的扇區位於未安裝或者無檔案系統的卷內(這個是原生磁碟塊,沒有受作業系統的管理,  當然可以隨便寫)。

to change a volume file system:

1)open a volume.

2)lock the volume.

3)format the volume.

4)dismount the volume.

5)unlock the volume.

6)close the volume handle.

方案一:/

handle hdevice=createfile(

"\\\\.\\d:",//(注:這裡名稱不能為\\\\.\\physicaldriven(n為0-256),即物理磁碟,只能對邏輯分割槽鎖定與dismount操作)

generic_read|generic_write,  

//對資源的讀寫操作許可權

file_share_read|file_share_write,//共享模式

0,  

//指向安全屬性的指標

open_existing,  

// 如何操作,這裡是開啟存在的資源

file_attribute_normal,  

// 檔案屬性

null  

//如果不為零,則指定乙個檔案控制代碼,新檔案將從這個檔案中複製擴充套件屬性 );

if (hdevice==invalid_handle_value)

// dword dwbytereturned;

bool block=deviceiocontrol(

hdevice,  

fsctl_lock_volume,  

null,  

0,  

null, 

0, &dwbytereturned,

null );

if (!block)

messagebox(cspartition+" fsctl_lock_volume 失敗","提示",mb_iconinformation);

writefile(...操作)//這裡可以是\\\\.\\physicaldriven得到的控制代碼,但只限鎖定的邏輯盤區寫入

bool bunlock=deviceiocontrol(

hdevice,  

fsctl_unlock_volume, //鎖定後要解鎖  

null,  

0,  

null, 

0,&dwbytereturned,

null

);if (!bunlock)

messagebox(cspartition+" fsctl_unlock_volume 失敗","提示",mb_iconinformation);

closehandle(hdevice);

方案二:

/ handle hdevice=createfile(

"\\\\.\\d:",//(注:這裡名稱不能為\\\\.\\physicaldriven(n為0-256),即物理磁碟,只能對邏輯分割槽鎖定與dismount操作)

generic_read|generic_write,  

//對資源的讀寫操作許可權

file_share_read|file_share_write,//共享模式

0,  

//指向安全屬性的指標

open_existing,  

// 如何操作,這裡是開啟存在的資源

file_attribute_normal,  

// 檔案屬性

null  

//如果不為零,則指定乙個檔案控制代碼,新檔案將從這個檔案中複製擴充套件屬性

);if (hdevice==invalid_handle_value)

bool bdismout=deviceiocontrol(

hdevice,  

fsctl_dismount_volume,  

null,  

0,  

null, 

0, &dwbytereturned,

null );

if (!bdismout)

messagebox(cspartition+" fsctl_dismount_volume 失敗","提示",mb_iconinformation);

writefile(...操作)//這裡可以是\\\\.\\physicaldriven得到的控制代碼,但只限鎖定的邏輯盤區寫入

closehandle(hdevice);

注:寫磁碟的速度會比較慢,與讀的無法比的,原因未知,msdn上的這個問題的求問:

WIN7 轉換靜態磁碟為動態磁碟

1.windows鍵 r,開啟執行對話方塊,鍵入 diskpart 進入windows 自帶的磁碟管理程式進入dos視窗 diskpart 2.鍵入 list disk 選擇檢視該電腦下已連線的硬碟,會顯示如下 磁碟 狀態 大小 可用 dyn gpt 磁碟 0 聯機 112 gb 29 gb 3.鍵...

WIN7建立網路對映磁碟

建立網路對映磁碟 如果需要經常訪問網路中的同乙個共享資料夾,則可以將這個共享資料夾直接對映為本地計算機中的乙個虛擬驅動器。其具體操作如下。1 雙擊桌面上 計算機 圖示,開啟 計算機 視窗,單擊工具欄上的 對映網路驅動器 按鈕,如圖16.38所示。2 彈出 對映網路驅動器 對話方塊,在 驅動器 下拉列...

win7磁碟整理碎片怎麼操作

整理方法 首先點選頁面底部的 開始 選單按鈕,在彈出的選單欄中點選 所有程式 選擇 附件 然後點選 系統工具 雙擊開啟 磁碟碎片整理程式 選擇需要進行碎片整理的磁碟 最後選擇 磁碟分析 點選 磁碟碎片整理 即可。點選win7電腦開始選單,然後在彈出的選單欄中點選所有程式,找到 附件 點開選單欄的 附...