如何获取磁盘分区信息(包括卷标、序列号、类型、总大小、剩余大小)

 

如何获取磁盘分区信息(包括卷标、序列号、类型、总大小、剩余大小)
{  
    文章名   : 如何获取磁盘分区信息(包括卷标、序列号、类型、总大小、剩余大小)
    说明     : 无
    作者     : JJony
    QQ       : 254706028
    博客     : http://blog.csdn.net/jzj_jony
    空间     : http://jonychen,ys168.com
    测试环境 : WinXPSP2+Delphi7
    声明     : 您可以任意转载,但请注明文章作者和出处
}

最近看到有人在问"如何知道分区剩余空间大小",看看也没人回答或者回答的不太准确,
闲来无事就写了个小程序,当然获得的信息更全面一点,下面就是我的函数源代码:
//其中VolumeName,VolumeSerialNumber,PartitionType,TotalSpace,TotalFreeSpace为
//返回参数,包括分区的各种信息
Function GetHardDiskPartitionInfo(const DriveLetter:Char;
                                  var VolumeName,VolumeSerialNumber,PartitionType:string;
                                  var TotalSpace,TotalFreeSpace:string): string;
var
  NotUsed: DWORD;
  VolumeFlags: DWORD;
  VolumeInfo: array[0..MAX_PATH] of Char;
  VSNumber: DWORD;
  PType: array[0..32] of Char;
  VName:array[0..32] of Char;
  FreeS,TotalS:Int64;
  TotalF:Int64;
begin
  if not GetVolumeInformation(PChar(DriveLetter + ':/'),
                       @VName, SizeOf(VolumeInfo), @VSNumber, NotUsed,
                       VolumeFlags, PType, 32) then
     result:='卷信息未能完全返回'#13#10;
  VolumeName:=strpas(VName);
  VolumeSerialNumber:=InttoHex(VSNumber,8);
  PartitionType:=StrPas(PType);
  if not GetDiskFreeSpaceEx(PChar(DriveLetter + ':/'),FreeS,TotalS,@TotalF) then
     result:=result+'获取卷空间大小失败';
  TotalSpace:=FloatToStr(Round(TotalS / 1024 / 1024 /1024 * 100) / 100);
  TotalFreeSpace:=FloatToStr(Round(TotalF / 1024 / 1024 /1024 * 100) / 100);
end;
//函数很简单,一看就明白
注意:根据MSDN的说明,如果分区大于2G一定要用GetDiskFreeSpaceEx
//以下是调用实例
procedure TForm1.Button1Click(Sender: TObject);
var
  VName,VSNumber,PType:string;
  TotalS,TotalF:string;
begin
  GetHardDiskPartitionInfo('c',VName,VSNumber,PType, TotalS,TotalF);
  memo1.Lines.Add('卷标:'+VName);
  memo1.Lines.Add('卷序列号:'+VSNumber);
  memo1.Lines.Add('分区类型:'+PType);
  memo1.Lines.Add('分区总空间大小:'+TotalS+' G');
  memo1.Lines.Add('分区剩余空间大小:'+TotalF+' G');
end;  


仙桃市 荆州市 神农架林区 十堰市 天门市 潜江市 孝感市 荆门市 武汉市 随州市 黄冈市 咸宁市 鄂州市 黄石市 襄樊市 宜昌市 恩施土家族苗族自治州
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值