Некоторые могут найти это полезным - оно даст вам общее и свободное дисковое пространство по DeviceID устройства тома. Он также использует WMI, как ответ RRUZ, но он работает с DeviceID, поэтому он имеет те же преимущества + он также работает с несвязанными устройствами и драйверами (или сопоставленными с путем).
procedure DiskSizesFromVolumeDeviceID(deviceID:string);
var
WMIServices : ISWbemServices;
Root : ISWbemObjectSet;
Item: Variant;
i: Integer;
Cap:TCap;
begin
try
WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
Root := WMIServices.ExecQuery(Format('SELECT Capacity, FreeSpace FROM Win32_Volume WHERE DeviceID="%s"', [StringReplace(deviceID, '\', '\\', [rfReplaceAll])]),'WQL', 0, nil);
for i := 0 to Root.Count - 1 do
begin
Item := Root.ItemIndex(i);
TotalSpace := ( Item.Capacity);
FreeSpace := (Item.FreeSpace);
End;
end;