使程序访问物理硬盘的N种方法

在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");//用完后删除这个盘符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值