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);

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394526.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394526.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

公司 郵件 翻譯 培訓 長難句 結課

今天結課啦。。。。。。 明天培訓總結&#xff0c;講翻譯技巧總結。 1new forms of thoughts as well as new subjects for thought must arise in the future as they have in the past, giving rise to new standards of elegance. 2if the small hot spots look as expected…

元祖(轉載)

一.基本數據類型  整數&#xff1a;int  字符串&#xff1a;str(注&#xff1a;\t等于一個tab鍵)  布爾值&#xff1a; bool  列表&#xff1a;list   列表用[]  元祖&#xff1a;tuple  元祖用&#xff08;&#xff09;  字典&#xff1a;dict注&#xff1a;所…

leetcood學習筆記-226- 翻轉二叉樹

題目描述&#xff1a; 第一次提交&#xff1a; class Solution(object):def invertTree(self, root):""":type root: TreeNode:rtype: TreeNode"""if not root:return Nonetemp root.leftroot.left root.rightroot.right temp# root.left,…

現代JavaScript中的精美圖案:制冰廠

I’ve been working with JavaScript on and off since the late nineties. I didn’t really like it at first, but after the introduction of ES2015 (aka ES6), I began to appreciate JavaScript as an outstanding, dynamic programming language with enormous, expres…

惠普omen測試軟件,雙GTX1080奢華魔方PC 惠普OMEN X評測

惠普最近一段時間在游戲PC領域著力發力&#xff0c;桌面的暗影精靈家族熱賣&#xff0c;如火如荼的勢頭終于傳導到了臺式機領域。而今&#xff0c;惠普也終于有了自己正統意義上的重型武器——桌面游戲臺式機OMEN 900暗影精靈II 系列。今天我們就要為大家評測這款三萬元的臺式機…

python 清華鏡像_Anaconda3清華鏡像 V5.3.1 最新免費版

相關軟件軟件大小版本說明下載地址Anaconda3清華鏡像是一款功能強大的python管理工具&#xff0c;此軟件集成了Conda和Python等大量科學計算分析的包&#xff0c;可以幫助用戶快速實現項目環境的配置&#xff0c;有需要的趕快來試試吧&#xff01;【功能特點】1、省時省心&…

Qt第五課 無構造函數可以接受源類型,或構造函數重載決策不明確

場景QJsonArray rgParams { 10, 20, 30, 40 };編譯代碼的時候出錯&#xff0c;C11標準才支持這種類的初始化列表語法&#xff0c;因此如果當前VS的版本過低&#xff0c;必須調整已有的代碼&#xff0c;例子如下&#xff1a;QJsonArray rgParams;rgParams.insert(0, 10);rgPar…

二. linux基礎命令

linux的基本命令一般有100多個&#xff0c;多練就可以了&#xff1b; 如果登陸用戶是root&#xff0c;那么是#&#xff1b;如果是其他用戶&#xff0c;則顯示的是$ 練習&#xff1a;基本命令 1.創建一個目錄/data mkdir /data ls -ld /data 2.在/data下面創建一個文件oldboy.tx…

mac 沒有所有開發者_為什么開發人員應該像產品所有者那樣思考

mac 沒有所有開發者by Sajal Sarwar Sharma通過薩加爾薩瓦夏爾馬 為什么開發人員應該像產品所有者那樣思考 (Why developers should think more like product owners) You have just deployed your long-awaited feature to production after a long and gruesome month of co…

程序員這樣對待簡歷,你期望面試官怎么對待你?

為什么想到談這個問題呢&#xff1f; 前段時間公司因業務擴展需要招聘幾個研發、運維以及測試人員&#xff0c;在看面試者的簡歷時&#xff0c;發現很多人都沒有認真的去對待簡歷&#xff0c;只是把招聘網站上的打印一下就好了&#xff01; 這就讓我想問幾個問題&#xff1a; 1…

mfc try catch 捕獲并顯示_“全棧2019”Java異常第十七章:Error該不該被捕獲?

難度初級學習時間30分鐘適合人群零基礎開發語言Java開發環境JDK v11IntelliJ IDEA v2018.3友情提示本教學屬于系列教學&#xff0c;內容具有連貫性&#xff0c;本章使用到的內容之前教學中都有詳細講解。本章內容針對零基礎或基礎較差的同學比較友好&#xff0c;可能對于有基礎…

長春高中計算機考試時間安排,長春部分高中期末考試時間出爐!

原標題&#xff1a;長春部分高中期末考試時間出爐&#xff01;上次跟大家分享了中小學的放假時間&#xff0c;今天就來說說期末考試時間吧&#xff01;雖然有的學校時間未定&#xff0c;但是按照慣例&#xff0c;長春市各大高中高一高二年級&#xff0c;本次的期末考試時間&…

用習慣了windows系統要怎樣去認識linux系統(一)

一、前言對于普通用戶來說99%都使用的是windows操作系統&#xff0c;即便那些會使用linux系統的技術員來說&#xff0c;他們PC上安裝的也是windows系統。linux系統只是用于服務器市場&#xff0c;可以說現在服務器市場80%使用的是linux系統。那它們兩系統之間有哪些區別呢&…

spring 配置文件模板

<?xml version"1.0" encoding"UTF-8"?><beans xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc"http://www.springframework.org/schema/mvc" xmlns:context"http://www.springframework.org/schema…

VAssistX使用小竅門

日常使用中的一些VAssistX使用小竅門&#xff0c;簡單總結下 一&#xff0c;修改VAssistX默認緩存文件路徑&#xff0c;防止默認C盤被占用空間過大 1、 打開注冊表HKCU\Software\Whole Tomato&#xff0c;新建UserDataDir&#xff0c;數值為要修改的路徑&#xff0c;如下圖&am…

react 交互_如何在React應用程序中跟蹤用戶交互

react 交互by Faouzi Oudouh通過Faouzi Oudouh 如何在React應用程序中跟蹤用戶交互 (How to track user interactions in your React app) Worry not about which Analytics provider you need to gather user interaction within your app.不必擔心需要哪個Analytics(分析)提…

shell python比較_shell中的條件判斷以及與python中的對比

shell中比如比較字符串、判斷文件是否存在及是否可讀等&#xff0c;通常用"[]"來表示條件測試。注意&#xff1a;這里的空格很重要。要確保方括號的空格。if ....; then python中的條件判斷&#xff1a; if ....: (此處是冒號&#xff0c;不同…

服務器麒麟系統能設置mtu嗎,麒麟操作系統安裝標準手冊-20210405220006.docx-原創力文檔...

精品文檔精品文檔PAGEPAGE47精品文檔PAGE.銀河麒麟V3操作系統安裝手冊V1.2編制&#xff1a;王帥校核&#xff1a;朱本亮審定&#xff1a;周俊...文檔更新日志&#xff1a;序號修訂時間修訂內容修改人審定人012017-04-12發布文檔V1.0王帥周俊022017-05-11增加啟動安裝時藍屏錯誤…

多個 gradle 文件夾 \.gradle\wrapper\dists\ 設置gradle不是每次都下載

韓夢飛沙 韓亞飛 313134555qq.com yue31313 han_meng_fei_sha 設置gradle不是每次都下載 \.gradle\wrapper\dists\ 在你導入項目的時候&#xff0c;有個選項的&#xff1a; 你要是選了Use default gradle mapper就會下載一次&#xff0c;Use local gradle distribution就會…

docker使用方式

docker使用方式安裝&#xff1a;1.安裝依賴 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 2添加yum源 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 3.安裝 yum install docker-ce docker-ce-cli contain…