日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python读写磁盘扇区数据_C++-如何直接读取Windows磁盘扇区的数据?

發布時間:2023/12/9 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读写磁盘扇区数据_C++-如何直接读取Windows磁盘扇区的数据? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.通過CreateFile系列來完成

讀寫扇區可以通過CreateFile打開磁盤邏輯分區,還要通過SetFilePointer以文件操作的方式把指針移到要操作的磁盤扇區開始處,在定位到要訪問的扇區開始位置后就可以通過ReadFile或WriteFile函數實施相應的讀寫訪問了,具體操作與文件讀寫并沒有什么太大的差別。

示例代碼:

BOOL CDirectAccessHDDlg::WriteSectors(BYTE bDrive, DWORD dwStartSector,

WORD wSectors, LPBYTE lpSectBuff)

// 對磁盤扇區數據的寫入

{

if (bDrive == 0) return 0;

char devName[] = "\.\A:";

devName[4] ='A' + bDrive - 1;

HANDLE hDev = CreateFile(devName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,

OPEN_EXISTING, 0, NULL);

if (hDev == INVALID_HANDLE_VALUE) return 0;

SetFilePointer(hDev, 512 dwStartSector, 0, FILE_BEGIN);

DWORD dwCB;

BOOL bRet = WriteFile(hDev, lpSectBuff, 512 wSectors, &dwCB, NULL);

CloseHandle(hDev);

return bRet;

}

BOOL CDirectAccessHDDlg::ReadSectors(BYTE bDrive, DWORD dwStartSector,

WORD wSectors, LPBYTE lpSectBuff)

// 對磁盤扇區數據的讀取

{

if (bDrive == 0) return 0;

char devName[] = "\.\A:";

devName[4] ='A' + bDrive - 1;

HANDLE hDev = CreateFile(devName, GENERIC_READ, FILE_SHARE_WRITE,

NULL, OPEN_EXISTING, 0, NULL);

if (hDev == INVALID_HANDLE_VALUE) return 0;

SetFilePointer(hDev, 512 dwStartSector, 0, FILE_BEGIN);

DWORD dwCB;

BOOL bRet = ReadFile(hDev, lpSectBuff, 512 wSectors, &dwCB, NULL);

CloseHandle(hDev);

return bRet;

}

2.通過ReadSectors直接讀寫磁盤扇區數據

示例代碼:

if (ReadSectors(uDiskID, m_uFrom, (UINT)dwSectorNum, bBuf) == FALSE) {

MessageBox("所選磁盤分區不存在!", "錯誤", MB_OK | MB_IConERROR);

return;

}

//為了方便數據的顯示,可做如下處理以完成格式轉換等工作:

for (DWORD i = 0; i < dwSectorNum * 512; i++) {

sprintf(cBuf, "%s%02X ", cBuf, bBuf[i]);

if ((i % 512) == 511)

sprintf(cBuf, "%srn第%d扇區rn", cBuf, (int)(i / 512) + m_uFrom);

if ((i % 16) == 15)

sprintf(cBuf, "%srn", cBuf);

else if ((i % 16) == 7)

sprintf(cBuf, "%s- ", cBuf);

}

總結

以上是生活随笔為你收集整理的python读写磁盘扇区数据_C++-如何直接读取Windows磁盘扇区的数据?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。