鎬庢牱浣跨敤getbook鍑芥暟 (鎬庝箞鐢╣etdata鎶撳彇鏁版嵁)

procedure TForm1.btn2Click(Sender: TObject);
var
  RootPath: string;
  VolumeName, FileSystemName: array[0..MAX_PATH] of Char;
  VolumeSerialNumber, MaximumComponentLength, FileSystemFlags: DWORD;
begin
  RootPath := 'C:\';  // 指定卷的根路径

  if GetVolumeInformation(PChar(RootPath), VolumeName, SizeOf(VolumeName),
    @VolumeSerialNumber, MaximumComponentLength, FileSystemFlags,
    FileSystemName, SizeOf(FileSystemName)) then
  begin
    // 在这里处理获取到的卷信息
    mmo1.Lines.Add('Volume Name: ' + VolumeName) ;
    mmo1.Lines.Add('Volume Serial Number ' +IntToHex(VolumeSerialNumber, 8)) ;
    mmo1.Lines.Add('Maximum Component Length:'+IntToStr(MaximumComponentLength)) ;
    mmo1.Lines.Add('File System Flags ' + IntToStr(FileSystemFlags));
    mmo1.Lines.Add('File System Name:' + FileSystemName) ;
  end
  else
  begin
    // 获取卷信息失败,进行错误处理
    ShowMessage('Failed to get volume information.');
  end;
end;

这个示例程序同样创建了一个简单的窗体,其中包含一个按钮。当按钮被点击时,会调用GetVolumeInformation函数来获取指定卷的信息。你可以根据实际需求,修改 RootPath 变量的值来指定要获取信息的卷的根路径。

需要注意的是,前面的回答中,体积名称缓冲区大小和文件系统名称缓冲区大小应该使用SizeOf函数获取,而不是直接指定一个固定的大小。请参考这个示例程序。