在 Win32 下的信息: 直接驱动器访问


概要


若要在基于 Win32 的应用程序中打开直接磁盘访问 (原始 i/o 操作) 的物理硬盘驱动器,使用窗体的一个设备名称
\\.\PhysicalDriveN
其中 N 是 0、 1、 2,依此类推,表示系统中的每个物理驱动器。


要打开逻辑驱动器,请直接访问的形式

\\.\X:
其中 x: 是硬盘分区号、 软盘驱动器或 CD-ROM 驱动器。

详细信息


您可以打开物理或逻辑驱动器 CreateFile() 应用程序编程接口 (API) 使用这些设备名称提供您有驱动器的访问权限 (即,您必须是管理员)。必须使用的 CreateFile() FILE_SHARE_READ 和 FILE_SHARE_WRITE 的标志来访问该驱动器。


一旦逻辑或物理驱动器已被打开,然后可以对整个驱动器执行对数据的直接 I/O。在执行直接磁盘 I/O,必须寻求、 读取和写入的设备和扇区边界上的扇区大小的倍数。调用 DeviceIoControl() 使用 IOCTL_DISK_GET_DRIVE_GEOMETRY 以获取字节 / 扇区、 扇区、 轨道等,每扇区的数目,这样可以计算出所需的缓冲区大小。


请注意,基于 Win32 的应用程序无法打开文件,通过内部的 Windows NT 对象名称;例如,尝试打开打开光驱

\Device\CdRom0
无法工作,因为这不是有效的 Win32 设备名称。应用程序可以使用 QueryDosDevice() API 以获取所有有效的 Win32 设备名称的列表,请参阅特定的 Win32 设备名称和内部的 Windows NT 对象名称之间的映射。以足够的特权级别运行的应用程序可以定义、 重定义,或通过调用 DefineDosDevice() API 删除 Win32 设备映射。