3

ドライブの名前またはラベルを取得したい。

私はこの関数を使用します:

function GetVolumeLabel(DriveChar: Char): string;
var
  NotUsed:     DWORD;
  VolumeFlags: DWORD;
  VolumeInfo:  array[0..MAX_PATH] of Char;
  VolumeSerialNumber: DWORD;
  Buf: array [0..MAX_PATH] of Char;
begin
    GetVolumeInformation(PChar(DriveChar + ':\'),
    Buf, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
    VolumeFlags, nil, 0);

    SetString(Result, Buf, StrLen(Buf));   { Set return result }
    Result:=AnsiUpperCase(Result)
end;

たとえば、Windowsエクスプローラーのドライブは次のとおりです。

Local Disk (C:)
Data (D:)
DVD RW Drive (E:)

コードの出力:

C: 
D: DATA
E:

CとEのラベルは空です。名前のないドライブ(CおよびE)のラベルを表示するには、どのwinapi / functionを使用する必要がありますか?

4

1 に答える 1

4

ボリューム ラベルがない場合は、"ローカル ディスク" と "DVD RW ドライブ" がプレースホルダーとして使用されると思います。MSDNから:

ラベルは、ボリュームを認識しやすくするために、通常はエンド ユーザーによってボリュームに割り当てられるわかりやすい名前です。ボリュームには、ラベル、ドライブ文字、またはその両方を含めることも、どちらも含めることもできません。

これが役立つかどうかはわかりませんが、GetDriveTypeを使用して、戻り値に基づいてラベルを生成することをお勧めします。GetDriveType は、ハード ドライブ、リムーバブル ドライブ、CD タイプのドライブを区別しますが、CD-ROM/CD-RW/DVD-ROM/DVD-RW ドライブを区別しないとは思いません。

于 2010-05-17T06:35:27.150 に答える