Abolmasov Dmitry писал(а):
- получить все буквы логических дисков с помощью GetLogicalDriveStrings
- получить device path для каждого диска с помощью QueryDosDevice
- заменить device path на букву диска
goluzov, точно так и сделано, как написано, только вместо GetLogicalDriveStrings получаем не текстовую матрицу, а битовую при помощи GetLogicalDrives, те же фаберже, только вид сбоку
procedure GetDeviceList(List: PStrListEx);
var
Root: string;
DeviceName: string;
Drives: DWORD;
len: integer;
begin
Drives := GetLogicalDrives();
Root := 'A:';
while Drives <> 0 do
begin
if (Drives and 1) = 1 then
begin
SetLength(DeviceName, 256);
len := QueryDosDevice(@Root[1], @DeviceName[1], 256);
if len <> 0 then
begin
SetLength(DeviceName, len);
DeviceList.AddObject(Trim(DeviceName), ord(Root[1]));
end;
end;
inc(Root[1]);
Drives:= Drives shr (1);
end;
end;
var
Root: string;
DeviceName: string;
Drives: DWORD;
len: integer;
begin
Drives := GetLogicalDrives();
Root := 'A:';
while Drives <> 0 do
begin
if (Drives and 1) = 1 then
begin
SetLength(DeviceName, 256);
len := QueryDosDevice(@Root[1], @DeviceName[1], 256);
if len <> 0 then
begin
SetLength(DeviceName, len);
DeviceList.AddObject(Trim(DeviceName), ord(Root[1]));
end;
end;
inc(Root[1]);
Drives:= Drives shr (1);
end;
end;