PhysicalDrive

由于"\"是C/C+中转义符, "\\\\.\\"就相当于\\.\

在Windows中 \\.\ 前缀用于标识设备,其中的"."表示本地计算机。

比如\\.\PhysicalDrive0表示本机的物理驱动器0(一般是主硬盘),
\\.\COM1表示本机的1号串行口
\\computer01\PhysicalDrive1表示网络中计算机computer01的物理驱动器1,等等。

你可以用CreateFile函数打开\\.\PhysicalDrive0
然后用ReadFile, WriteFile来直接读写本机硬盘扇区
用DeviceIoControl来获取硬盘的信息(扇区数,磁头数,柱面数)等。

亦可用CreateFile打开卷,如\\.\C:即是C盘。

若你对windows内核有点了解,事实上\\.\就相当于NT对象目录中的\??\目录

其中包含了所有提供给Win32程序的设备对象,你可用winobj来查看


转自:http://www.cnblogs.com/jackydalong/p/3477835.html


比较设备文件名和路径名

从开发的角度来看,获取设备句柄是设备控制的先决条件。但是,由于设备控制架构的差异,获取设备句柄会根据所用平台不同(Windows 还是 Linux)而有不同的过程。

一般而言,设备句柄由具体设备驱动程序的名称决定。

Windows 设备驱动程序的文件名不同于普通文件,通常称为设备路径名。它具有固定格式,形如 \.DeviceName。在 C/C++ 编程中,这个字符串应当是 \\.\DeviceName。在代码中表示为 \\\\.\\DeviceNameDeviceName 应当与相应设备驱动程序定义的设备名称相同。

有些设备名称由 Microsoft 定义,因此不能修改(如表 1 所示)。

表 1. Windows 设备名称(x = 0,1,2 等)
设备 路径名
软盘驱动器 A: B:
硬盘逻辑子区 C: D: E: . . .
物理驱动器 PhysicalDrivex
CD-ROM、DVD/ROM CdRomx
磁带驱动器 Tapex
COM 端口 COMx

例如,我们在 C/C++ 编程中使用设备路径名,比如 \\\\.\\PhysicalDrive1\\\\.\\CdRom0 和 \\\\.\\Tape0。 关于这个列表未收录的其他设备的详细情况,请查看本文后面的 参考资料 小节。

因为 Linux 将设备描述为文件,所以可以在目录 ./dev 中找到所有设备文件。这个目录的设备驱动程序包括:

  • IDE(Integrated Drive Electronics)硬盘驱动器,比如 /dev/hda 和 /dev/hdb
  • CD-ROM 驱动器,有些是 IDE;也有些是模拟 SCSI(Small Computer Systems Interface)设备的 CD-RW(CD 读/写)驱动器,比如 /dev/scd0
  • 串行口,例如 /dev/ttyS0 表示 COM1,/dev/ttyS1 表示 COM2,依此类推
  • 定位设备,包括 /dev/input/mice 等
  • 打印机,比如 /dev/lp0

常见设备文件大多可以按照上述描述找到。有关其他设备文件名和设备的详细信息,请使用命令 dmesg


你可能感兴趣的:(PhysicalDrive)