我在从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,同时从物理驱动器中读取数据??
提前致谢。