使程序访问物理硬盘的N种方法
2008-05-30 00:34
316 查看
在NT系统中,每个设备都有几个特殊的路径,在访问这些设备时可以当成文件访问,这些路径不区分大小写。
访问硬盘最常用的路径是://./PhysicalDrive+数字,如//./PhysicalDrive0表示第一个物理硬盘。取得该硬盘句柄的方法一般用CreateFile(),如
CString hd=////.//PhysicalDrive0;
hDevice = CreateFile(
hd,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL
);
打开成功后就可以用ReadFile等函数进行读写操作。
访问硬盘还可以有其它路径,如“/Device/Harddisk0”。
如果想访问分区,可以有以下几种方法:
//?/C:表示C盘的路径,用访问硬盘的方法可以对它进行访问。C盘还可以用"/Device/HarddiskVolume1","/Device/Harddisk0/Partition1",//?/Volume{385baaca-8b42-11dc-bb79-0013d324fc7d}/(用GetVolumeNameForVolumeMountPoint()获得)。
提示:如果想获得硬盘整体的物理信息,可以用这个硬盘上任意一个分区的句柄来代替硬盘句柄。
如果发现某些路径用CreateFile打不开,可以用DefineDosDevice()给它定义一个盘符,这个盘符可以是A:,B:,也可以是特殊符号(如[:,]:)甚至是数字(1:,2:)。对于非字母的的盘符,在我的电脑里是不可见的,只有程序可以访问,这种方法常用于访问隐藏分区。
例:
DefineDosDevice (DDD_RAW_TARGET_PATH, "[:"
"//Device//Harddisk0//Partition1");//分配一个“[:”盘符,该盘符不可见。
…………………………//处理代码
bRet = DefineDosDevice (
DDD_RAW_TARGET_PATH|DDD_REMOVE_DEFINITION|
DDD_EXACT_MATCH_ON_REMOVE, "[:",
"//Device//Harddisk0//Partition1");//用完后删除这个盘符。
访问硬盘最常用的路径是://./PhysicalDrive+数字,如//./PhysicalDrive0表示第一个物理硬盘。取得该硬盘句柄的方法一般用CreateFile(),如
CString hd=////.//PhysicalDrive0;
hDevice = CreateFile(
hd,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL
);
打开成功后就可以用ReadFile等函数进行读写操作。
访问硬盘还可以有其它路径,如“/Device/Harddisk0”。
如果想访问分区,可以有以下几种方法:
//?/C:表示C盘的路径,用访问硬盘的方法可以对它进行访问。C盘还可以用"/Device/HarddiskVolume1","/Device/Harddisk0/Partition1",//?/Volume{385baaca-8b42-11dc-bb79-0013d324fc7d}/(用GetVolumeNameForVolumeMountPoint()获得)。
提示:如果想获得硬盘整体的物理信息,可以用这个硬盘上任意一个分区的句柄来代替硬盘句柄。
如果发现某些路径用CreateFile打不开,可以用DefineDosDevice()给它定义一个盘符,这个盘符可以是A:,B:,也可以是特殊符号(如[:,]:)甚至是数字(1:,2:)。对于非字母的的盘符,在我的电脑里是不可见的,只有程序可以访问,这种方法常用于访问隐藏分区。
例:
DefineDosDevice (DDD_RAW_TARGET_PATH, "[:"
"//Device//Harddisk0//Partition1");//分配一个“[:”盘符,该盘符不可见。
…………………………//处理代码
bRet = DefineDosDevice (
DDD_RAW_TARGET_PATH|DDD_REMOVE_DEFINITION|
DDD_EXACT_MATCH_ON_REMOVE, "[:",
"//Device//Harddisk0//Partition1");//用完后删除这个盘符。
相关文章推荐
- 写程序时访问硬盘的方法
- 用C#访问硬盘物理扇区和逻辑扇区的方法
- Linux主机VMWare访问物理硬盘方法
- .net程序出现没有对Temporary ASP.NET Files”的写访问权限解决方法
- Android程序访问网络时The operation timed out错误解决方法
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- 处理硬盘物理坏道方法
- IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
- nginx下运行php的程序时返回200访问却是空白页问题的解决方法
- 移动硬盘遇到无法访问,参数错误的处理方法
- MFC初学者:MFC程序中类之间的相互访问的常规方法。
- 无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法
- 一台物理机器一个IP配置多个域名多套程序的方法
- VS2005+ACCESS WEB程序出错数据访问权限错误的解决方法
- 硬盘文件夹没有权限访问,文件夹也无权限,好多程序也是无权限启动
- 【转】VMWare虚拟机linux访问windows主机硬盘文件方法
- asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法
- 一个Tomcat支持不同的域名访问各自不同程序的配置方法
- 程序访问物理地址之MmMapIoSpace 与 OALPAtoVA
- win2003 运行 aspx程序出现Temporary ASP.NET Files 访问被拒绝 的解决方法