【发布时间】:2017-07-06 10:51:29
【问题描述】:
我问这个是因为当我们读取原始设备时我无法理解扇区对齐的读取。
让我们假设在 Windows 机器中,我们使用 ReadFile() C 函数从设备读取 x 字节。
我知道我们只能读取扇区对齐的数据,但最近我发现了 SetFilePointer() 函数,它允许我们将指针放在我们之前用 CreateFile() 打开的设备的 x 字节中。
我的问题是,如果我们需要读取扇区对齐的数据,如果我们使用SetFilePointer(),例如这样:
SetFilePointer(device, 12, NULL, FILE_BEGIN);
(设备是一个现有设备的HANDLE,为了这个例子,我们假设它是一个USB笔驱动器),在那个例子中,我们设置了一个指向从FILE_BEGIN开始的第12个字节的指针。
如果我要从第 12 个字节开始读取相当于一个扇区(512 个字节),我是否需要像这样进行读取功能:
ReadFile(device, sector, (512 - 12), &bytesRead, NULL)
或者像这样:
ReadFile(device, sector, 512, &bytesRead, NULL)
无论如何,谢谢!
【问题讨论】: