由于"\"是C/C+中转义符, "\\\\.\\"就相当于\\.\
在Windows中 \\.\ 前缀用于标识设备,其中的"."表示本地计算机。
比如\\.\PhysicalDrive0表示本机的物理驱动器0(一般是主硬盘),
\\.\COM1表示本机的1号串行口
\\computer01\PhysicalDrive1表示网络中计算机computer01的物理驱动器1,等等。
你可以用CreateFile函数打开\\.\PhysicalDrive0
然后用ReadFile, WriteFile来直接读写本机硬盘扇区
用DeviceIoControl来获取硬盘的信息(扇区数,磁头数,柱面数)等。
亦可用CreateFile打开卷,如\\.\C:即是C盘。
若你对windows内核有点了解,事实上\\.\就相当于NT对象目录中的\??\目录
在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
。在代码中表示为 \\\\.\\DeviceName
。DeviceName
应当与相应设备驱动程序定义的设备名称相同。
有些设备名称由 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
。