1.在磁盘管理中可以看到黑色条框的磁盘未分配空间,说明windows支持这类信息。
2.调用windowsAPI函数只能获取磁盘总容量和各个分区的容量,但无法准确知道是否存在未分配空间,未分配空间的具体大小是多少。
求大神,帮忙解答。
2.调用windowsAPI函数只能获取磁盘总容量和各个分区的容量,但无法准确知道是否存在未分配空间,未分配空间的具体大小是多少。
求大神,帮忙解答。
解决方案 »
- EDIT背景色及内容显示问题
- 用NDIS编写防火墙时的错误,大家帮帮忙,谢谢了
- dynamic_cast在DEBUG和RELEASE下有区别?
- 关于线程的使用
- 我是新手,对VC编程有很多不懂,请大家帮帮忙
- 斑竹大哥,各位XDJM,小猪把分分给大家,顺便问个问题
- 关于waveInOpen及其回调函数waveInProc的使用方法?
- 加入CSDN,QQ群,号为1445054为闲聊区,号1476111为技术讨论区
- 分配内存时出现Microsoft C++ Exception怎么办?
- 求教:打包之后xxxxCOMSelfReg方式注册失败的问题
- 在MFC工程中如何添加已经写好的c++程序呢??求大神帮助!
- MFC中如何利用ifstream和ofstream对列表框控件实现文件的读写?
DeviceIoControl(hDevice,IOCTL_DISK_GET_DRIVE_LAYOUT_EX,NULL,0,&layOutInfo,sizeof(DRIVE_LAYOUT_INFORMATION_EX)*20,&bytesReturned,NULL)
根据layOutInfo里面每个分区的偏移地址layOutInfo[0].PartitionEntry[i].StartingOffset和分区长度layOutInfo[0].PartitionEntry[i].PartitionLength估算两个分区间未分配的空间大小。
如果两者之间没有未分配的空间的话,layOutInfo[0].PartitionEntry[i].StartingOffset+layOutInfo[0].PartitionEntry[i].PartitionLength=layOutInfo[0].PartitionEntry[i+1].StartingOffset。
如果存在未分配的空间的话,那么未分配空间的大小为:size=layOutInfo[0].PartitionEntry[i+1].StartingOffset-(layOutInfo[0].PartitionEntry[i].StartingOffset+layOutInfo[0].PartitionEntry[i].PartitionLength).
DISK_GEOMETRY_EX geoStruct;
memset(&geoStruct,0,sizeof(geoStruct));
DeviceIoControl(hDevice,IOCTL_DISK_GET_DRIVE_GEOMETRY_EX ,NULL,0,&geoStruct,sizeof(geoStruct),&bytesReturned,NULL)
网址http://www.cppblog.com/dingding/archive/2008/09/23/62570.html