在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 =