首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 調用 WinAPI:GetVolumeInformation 讀取磁碟資訊

     編輯:Delphi

取得磁碟機標籤、序號、檔案系統與最大檔名長度

GetVolumeInformation 一次可擷取磁碟區的關鍵屬性:磁碟代碼、磁碟標籤 (Volume Label)、序號 (Serial Number)、最大檔名長度、檔案系統旗標、檔案系統名稱 (NTFS/FAT32/exFAT 等)。

函數宣告

function GetVolumeInformation(
  lpRootPathName: PChar;
  lpVolumeNameBuffer: PChar;
  nVolumeNameSize: DWORD;
  lpVolumeSerialNumber: PDWORD;
  var lpMaximumComponentLength: DWORD;
  var lpFileSystemFlags: DWORD;
  lpFileSystemNameBuffer: PChar;
  nFileSystemNameSize: DWORD
): BOOL; stdcall;

完整範例 (顯示於 Memo)

procedure TForm1.FormCreate(Sender: TObject);
var
  RootPath: array[0..20] of Char;
  VolName: array[0..255] of Char;
  SerialNumber: DWORD;
  MaxCLength: DWORD;
  FileSysFlag: DWORD;
  FileSysName: array[0..255] of Char;
begin
  RootPath := 'C:\';
  GetVolumeInformation(
    RootPath,
    VolName,
    255,
    @SerialNumber,
    MaxCLength,
    FileSysFlag,
    FileSysName,
    255
  );

  Memo1.Clear;
  with Memo1.Lines do
  begin
    Add(Format('磁碟代碼: %s', [RootPath]));
    Add(Format('磁碟標籤: %s', [VolName]));
    Add(Format('磁碟序號: %s', [IntToHex(SerialNumber, 8)]));
    Add(Format('最大檔名長度: %d', [MaxCLength]));
    Add(Format('檔案系統旗標: %d', [FileSysFlag]));
    Add(Format('檔案系統名稱: %s', [FileSysName]));
  end;
end;

執行效果圖

常見檔案系統旗標

  • FS_CASE_IS_PRESERVED (大小寫保留)
  • FS_CASE_SENSITIVE (大小寫敏感)
  • FS_UNICODE_STORED_ON_DISK (支援 Unicode)
  • FS_PERSISTENT_ACLS (支援 ACL 權限)
  • FS_FILE_COMPRESSION (支援壓縮)
  • FS_VOL_IS_COMPRESSED (磁碟已壓縮)

適用於安裝程式檢查磁碟相容性、備份軟體識別目標磁碟等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved