您的位置:首页 > 其它

使程序访问物理硬盘的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");//用完后删除这个盘符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  path null file c
相关文章推荐