【发布时间】:2015-05-26 23:59:05
【问题描述】:
我已经尝试过这段代码,当我从 USB 闪存驱动器读取扇区时它可以工作,但它不适用于硬盘驱动器上的任何分区,所以我想知道当你尝试从 USB 读取时它是否相同或从硬盘驱动器
int ReadSector(int numSector,BYTE* buf){
int retCode = 0;
BYTE sector[512];
DWORD bytesRead;
HANDLE device = NULL;
device = CreateFile("\\\\.\\H:", // Drive to open
GENERIC_READ, // Access mode
FILE_SHARE_READ, // Share Mode
NULL, // Security Descriptor
OPEN_EXISTING, // How to create
0, // File attributes
NULL); // Handle to template
if(device != NULL)
{
SetFilePointer (device, numSector*512, NULL, FILE_BEGIN) ;
if (!ReadFile(device, sector, 512, &bytesRead, NULL))
{
printf("Error in reading disk\n");
}
else
{
// Copy boot sector into buffer and set retCode
memcpy(buf,sector, 512);
retCode=1;
}
CloseHandle(device);
// Close the handle
}
return retCode;}
【问题讨论】:
-
它是哪个窗口?也许这只是权限问题。
-
U盘是FAT32还是NTFS?
-
@EugeneSh。在 Windows 8.1 上
-
@JoseManuelAbarcaRodríguez USB 使用 fat32
-
别荒谬了,@JoseManuelAbarcaRodríguez。与操作系统相关的多个程序访问硬盘,包括应特权用户的要求,显然这是可能的。可能存在权限问题,但这与“您无能为力”相去甚远。
标签: c windows operating-system boot