永发信息网

C++如何用windowsAPI读取分区表

答案:2  悬赏:20  手机版
解决时间 2021-01-26 15:29
要读取硬盘的分区信息,包括每个分区的大小,起始扇区和盘符以及使用情况,改怎么做?
我试过createfile然后直接物理读取的方法,但是读取出来的每个分区无法和实际的盘符分配情况一一对应,所以想问问有没有什么windowsapi可以使用?
刚发现使用IOCTL_DISK_GET_DRIVE_LAYOUT_EX这个控制码似乎可以进行deviceioctl后获得,但是我写了段测试代码无效,返回PartitionCount为一个很大的数,代码如下
#include
#include
#include
#include
using namespace std;

int main()
{
DWORD junk;
DRIVE_LAYOUT_INFORMATION_EX pt;
HANDLE hDevice = CreateFileA("\\\\.\\PHYSICALDRIVE0",
GENERIC_READ,
FILE_SHARE_READ,// |
// FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hDevice==INVALID_HANDLE_VALUE)
{
printf("error,no such device!");
exit(0);
}
//DeviceIoControl(hFile,IOCTL_DISK_GET_DRIVE_LAYOUT,.....);
BOOL bResult = DeviceIoControl(hDevice, // device to be queried
IOCTL_DISK_GET_DRIVE_LAYOUT_EX, // operation to perform
NULL, 0, // no input buffer
&pt, sizeof(pt), // output buffer
&junk, // # bytes returned
(LPOVERLAPPED) NULL); // synchronous I/O
cout< system("PAUSE");
}

拜托,我的代码是有错的,那个叫孙冰男的,你原原本本复制一遍干嘛
最佳答案
#include
#include
#include
#include
using namespace std;

int main()
{
DWORD junk;
DRIVE_LAYOUT_INFORMATION_EX pt;
HANDLE hDevice = CreateFileA("\\\\.\\PHYSICALDRIVE0",
GENERIC_READ,
FILE_SHARE_READ,// |
// FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hDevice==INVALID_HANDLE_VALUE)
{
printf("error,no such device!");
exit(0);
}
//DeviceIoControl(hFile,IOCTL_DISK_GET_DRIVE_LAYOUT,.....);
BOOL bResult = DeviceIoControl(hDevice, // device to be queried
IOCTL_DISK_GET_DRIVE_LAYOUT_EX, // operation to perform
NULL, 0, // no input buffer
&pt, sizeof(pt), // output buffer
&junk, // # bytes returned
(LPOVERLAPPED) NULL); // synchronous I/O
cout< system("PAUSE");
}
全部回答
虽然我很聪明,但这么说真的难到我了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
得勝活流电养生中心(龙岭路店)地址在什么地方
请问一下Htcm8系列的手机恢复出厂设置了安装
【赫尔墨斯和雕像者续写】《赫尔墨斯和雕像者
办建筑装修二级资质需要哪些流程
大众旗下都有哪些品牌
LOL盒子失效
良田高拍仪启动时提示创建pdf导出目录失败
甲是某产品的专利权人,乙于2011年3月1日开始
成语绿女红男的意思是什么啊?有知道释义的请
linkedhashmap initialcapacity和loadfactor
与交通事故相比,属于飞行器特点是什么?
杭州外贸我想知道这个在什么地方
为什么航空障碍灯有一个2芯芯线一个3芯线
写出三个注视相近的词
云顶spa馆地址在什么地方,我要处理点事
推荐资讯
流动性短期融资需求应关注()。A.融资需求的时
下列选项中,领导的影响力主要来源于()。A.
26岁女没工作因家庭原因要离婚,大女儿4岁儿子
校场社区居委会怎么去啊,我要去那办事
福州哪里有阿玛尼armani 手表专卖店啊
为什么我做的酸奶一点都不酸
濮阳市宝利来汽车销售有限公司地址好找么,我
貊寨村村地址在哪,我要去那里办事
怎么去掉手臂上的黑色素
标致3008和奔腾x80哪个好
世界十大最聪明的动物
办理车贷公司需要那些手续
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?