NTFS - MBR出现在卷的开头

时间:2015-02-15 21:24:20

标签: windows winapi filesystems ntfs mbr

我在从NTFS Volume读取原始数据时遇到了一些问题。 我使用CreateFile使用UNC路径(" \。\ C")打开了我的C:驱动器,以便能够从中读取原始数据。

当我读到第一个部门时,我发现我正在阅读MBR部门。 据我所知,Volumes(在这种情况下,我的C驱动器)和物理驱动器(表示为\\.\PhysicalDriveX)之间存在区别。

区别在于MBR仅位于物理驱动器的第一个扇区,而Volume代表逻辑驱动器(同一个硬盘驱动器中的一个分区或更多分区),因此读取它的第一个扇区不应该是从理论上讲,这是MBR(因为实际分区仅在MBR的分区表之后开始)。

对我来说更特别的是,当我在阅读第一个\\.\PhysicalDrive0(这是我的物理硬盘)的第一个sectore时期望得到MBR时,我只得到了NULL。

根据维基百科:

  

主引导记录(MBR)是分区计算机大容量存储设备(如固定磁盘或可移动驱动器)最开始时的一种特殊类型的引导扇区

虽然我认为很清楚,但我附上相关代码:

tNtfsVolumeContext.hVolume = CreateFile(_T("\\\\.\\C:"), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
if (INVALID_HANDLE_VALUE == tNtfsVolumeContext.hVolume)
{
    return -1;
}

if ((!ReadFile(tNtfsVolumeContext.hVolume, &tBootSector, NTFS_SECTOR_SIZE, &dwBytesRead, NULL)) || (dwBytesRead != NTFS_SECTOR_SIZE))
{
    return -2;
}

我总结一下我的问题,是否有一个很好的解释为什么从音量读取一个扇区会导致读取MBR,同时从物理驱动器中读取数据??

提前致谢。

0 个答案:

没有答案