HanDs
管理员

[Delphi文章] 如何获取磁盘分区信息 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

如何获取磁盘分区信息(包括卷标、序列号、类型、总大小、剩余大小)
{  
    文章名   : 如何获取磁盘分区信息(包括卷标、序列号、类型、总大小、剩余大小)
    说明     : 无
    作者     : 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;


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
如何 获取 磁盘 分区 信息
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复