|
楼主 |
发表于 2010-10-19 14:31:42
|
显示全部楼层
5楼,你的代码你试过吗?
CreateFile是可以读,但是是读到逻辑扇区的数据,但我需要的是物理扇区的数据(例如MBR存放的扇区0)。
我的代码如下,可以正常读到逻辑扇区的数据:
BYTE *pbReadBuf = new BYTE[512];
DWORD dwReadCnt=0;
HANDLE hdnl = CreateFile(_T("\\\\.\\K:"), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
SetFilePointer(hdnl, dwSectorIndex*512, NULL, FILE_BEGIN); //测试时dwSectorIndex=0.
ReadFile(hdnl, pbReadBuf , 512, &dwReadCnt, NULL);
K:是指U盘盘符。。我不知道你那个“PhysicalDriveX”在那里有说明的?反正我试了,这个写法是不能创建到有效句柄的,X=0,1,2,3我都试了。
用WinHEX的“TOOL”->"Open Disk”可以分别打开逻辑磁盘或者物理磁盘,通过查看可以确认我读到的是逻辑磁盘的0扇区。 |
|