Code:
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetMaxFreeSpaceDrive: String;
var
i: Integer;
sDriveRoot: string;
iLastMax, iNewMax, iTotal: Cardinal;
begin
iLastMax:=0;
for i := 1 to 26 do
begin
sDriveRoot := Chr(i+64)+':';
if GetDriveType(sDriveRoot) = 3 then
begin
GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
if iLastMax < iNewMax then
begin
iLastMax := iNewMax;
Result:=sDriveRoot;
end;
end;
end;
end;