在Windows下,磁盘可以看做是一个文件,其文件名为\\\\.\\PhysicalDriveX,其中X表示磁盘的编号,例如\\\\.\\PhysicalDrive0表示的是第0号磁盘,如果需要读取一个磁盘只需要通过对应的文件名称获取到磁盘的句柄,然后通过函数ReadFile读取即可,下面是相关的代码。

//通过给定磁盘的编号,获取到磁盘的句柄

HANDLE GetDiskHandle(int iDiskNo)

{

char szDriverBuffer[128];

memset(szDriverBuffer,0,128);

//格式化设备文件名称

sprintf_s(szDriverBuffer,"\\\\.\\PhysicalDrive%d",iDiskNo);

HANDLE m_hDevice = NULL;

//CreateFile获取到设备句柄

m_hDevice = CreateFileA(

szDriverBuffer,// 设备名称,这里指第一块硬盘,多个硬盘的自己修改就好了

GENERIC_READ, // 指定读访问方式

FILE_SHARE_READ | FILE_SHARE_WRITE, // 共享模式为读|写,0表示不能共享

NULL, // NULL表示该句柄不能被子程序继承

OPEN_EXISTING, // 打开已经存在的文件,文件不存在则函数调用失败

NULL, // 指定文件属性

NULL);

if (m_hDevice==INVALID_HANDLE_VALUE){

m_hDevice = NULL;

//无效

return INVALID_HANDLE_VALUE;

}

//设备句柄

return m_hDevice;

}

//通过磁盘的句柄,给定读取的位置,获取到扇区512字节数据返回

//readpos:扇区的逻辑地址

//lpOutBuffer512:用于返回读取的数据

BOOL ReadSectorData( HANDLE& hDevice,UINT64 redpos,__out char * lpOutBuffer512 )

{

memset(lpOutBuffer512,0,512);

LARGE_INTEGER li;

li.QuadPart = redpos*0x200;//0x200 = 512,求出扇区的 字节地址,通过设置读取的地址和长度进行read

SetFilePointer(hDevice,li.LowPart,&li.HighPart,FILE_BEGIN);

DWORD DCount=0; //计数

BOOL bResult=ReadFile(hDevice, lpOutBuffer512,512, &DCount, NULL);

return bResult;

}

通过上面的操作可以获取到磁盘指定扇区的512字节数据。

扫码领个红包作为打赏吧~~

(余额宝支付时可抵现)

喜欢 (0)or分享 (0)

c语言windows读写扇区,Windows下MFC C/C++读取磁盘扇区数据相关推荐

  1. c++语言循环读写文件夹,在C++中逐行读取文件

    file.txt的内容包括: 5 3 6 4 7 1 10 5 11 6 12 3 12 4 其中,5 3是一个坐标对.如何在C++中逐行处理此数据? 我可以得到第一行,但如何得到文件的下一行? if ...

  2. linux 读取磁盘扇区,linux 下检查硬盘坏道/扇区

    文章摘自: Linux检测硬盘坏道 Linux检测硬盘坏道 badblocks 功能说明:检查磁盘装置中损坏的区块. 语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数 ...

  3. windows下修改磁盘扇区数据

    Windows系统提供了文件系统,通常应用程序读写文件都是调用CreateFile函数来实现,不会直接读写磁盘数据,但某些特殊目的中,我们需要读取磁盘扇区数据,查看是否包含某些关键字,并且有可能擦除这 ...

  4. 在Windows Server 2008系统环境下无损调整分区

    少朋友在长时间使用计算机之后,才发现先前划分的磁盘分区不太合理,不过这个时候磁盘分区中往往保存了大量的数据信息,倘若借助Windows系统内置的Fdisk命令来重新划分设置分区的话,保存在磁盘分区中的 ...

  5. 汇编 --- 从磁盘(扇区2到18)上读取数据到内存中

    下面代码读取柱面:0,磁头:0,扇区从2到18的数据到内存 0x8200~0xa3ff处 需要明白以下几点: 给定柱面,磁头,一个扇形区域是512字节,对应的物理可以理解为512个灯泡组(一个灯泡组有 ...

  6. python读写磁盘扇区数据有什么用_18-55.在Windows中,能够自动修复文件系统错误、扫描并尝试恢复坏扇区的操作是( )_学小易找答案...

    [单选题]sklearn实现KNN算法,使用的方法是? [单选题]以下机器加工方式,witness没有提供的是( ) [多选题]以下哪些是python常用的科学计算库? [多选题]16-68. 在Wi ...

  7. 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

    一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...

  8. Windows物理磁盘扇区读写示例总结

    Windows物理磁盘扇区读写示例 主要功能: 1. 根据逻辑磁盘盘符获取物理磁盘号: 2. 物理磁盘扇区计算: 3. 物理磁盘扇区读写: void CPDiskOprateDlg::OnBnClic ...

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

    1.通过CreateFile系列来完成 读写扇区可以通过CreateFile打开磁盘逻辑分区,还要通过SetFilePointer以文件操作的方式把指针移到要操作的磁盘扇区开始处,在定位到要访问的扇区 ...

最新文章

  1. 实战2--应用EL表达式显示投票结果
  2. SRM 721 DIV2
  3. Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)...
  4. 10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授
  5. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 1.2 识别不确定性的影响
  6. 每日一笑 | 一些关于学编程的领悟
  7. java猜数字小游戏_Java实现简单猜数字小游戏
  8. android sdk是灰的,Android Studio 2.3 sdk管理器标签灰显
  9. ksoap2-android Project
  10. 解决log4j:WARN No appenders could be found for logger
  11. 马哥linux脚本,马哥linux shell笔记
  12. ts80x服务器系统,Lenovo ThinkServer TS80X 塔式服务器
  13. mysql +cobar_Cobar源码解析(一)
  14. Python-常用数据结构(字典)-Dict
  15. hdu5020 Revenge of Collinearity 求三点共线的点对个数
  16. SAP GOS cl_gos_manager 添加附件功能
  17. VScode中txt文件乱码解决
  18. 计算机换内存条解决方案
  19. Consumer cannot be configured for auto commit for ackMode MANUAL_IMMEDIATE
  20. BSC上匿名项目DCS 保护个人金融隐私不被侵犯

热门文章

  1. 小程序源码:多功能喝酒神器-多玩法安装简单
  2. html代码input,HTML oninput用法及代码示例
  3. Hive数据仓库问题:SemanticException Unable to determine if hdfs
  4. 数据结构之哈夫曼树的基本知识
  5. 情人节表白-Andreamosaic多照片拼人像——和我宝贝的一周年纪念日
  6. 51单片机DS1302时钟芯片应用Proteus仿真
  7. 软件安装或打包遇到的问题 “请与管理员联系将程序包的安装用户界面选项更改为基本”...
  8. 人工智能(AI)入门---傅里叶语音识别项目(发端)
  9. 阿里巴巴,果然开始拥有“预测未来”的能力了...
  10. Delphi XE2 之 FireMonkey 入门(1)