小编ur.*_*ur.的帖子

如何在不获取ERROR_ACCESS_DENIED的情况下将文件写入PhysicalDrive(Windows 7)?

我正在尝试将测试模式写入格式化USB驱动器的每个扇区.有一个逻辑驱动器(例如h :).该卷是FAT格式的,包含要覆盖的数据.另外,我想覆盖整个物理驱动器.该程序以提升的用户权限运行.

首先,我做了以下事情:

// from the drive letter "h:" I get the physical disk number using
// IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS => "\\.\PhysicalDrive2"

hDevice = ::CreateFile( "\\.\PhysicalDrive2", GENERIC_READ|GENERIC_WRITE, 
  FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); 

// get the number of available sectors with IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
// => ulNumberOfSectors

// now I try to write some sectors, e.g. 2 (I want to use a higher value):
WriteFile( hDevice, abBuffer, 2*512, &byteswritten, NULL );
Run Code Online (Sandbox Code Playgroud)

呼叫WriteFile失败了ERROR_ACCESS_DENIED.

如果我写一个扇区,它就可以了.

当我覆盖第一个扇区并再次插入设备时,Windows希望对其进行格式化.在这种情况下,我的代码与2048个扇区一起工作没有ERROR_ACCESS_DENIED.

我还卸载了CodeProject中描述的卷:使用Windows …

windows file-io winapi windows-7

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

file-io ×1

winapi ×1

windows ×1

windows-7 ×1