Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.25;
Скачать: CL | DM;

Вниз

HDD   Найти похожие ветки 

 
Groove   (2002-09-20 09:46) [0]

Как узнать сколько разделов на винте и их имена


 
Kibitzer   (2002-09-20 13:01) [1]

Функция GetLogicalDrives возвращает четырёх-байтное число, каждый бит которой сообщает есть ли такой диск на компе (1-есть, 0-нет): самый младший - бит "Disk A", следующий бит - "Disk B", и т.д. Но этого конечно мало - нужно знать что это за диск (т.е. винчестер, CD, сетевой,...). Для этого есть функция GetDriveType. Недавно мне нужно было просканировать всю винчестерную память на компе (на наличие злобного вируса, Nimda, называется :)). Вот кусок из той проги:

var
c: Char;
Dir: String;
i: Integer;

...
for c := "A" to "Z" do
begin
Dir := c + ":\";
i := GetDriveType(PChar(Dir));
if i = 3 then DoSubDirs(Dir); // If fixed drive
end;


 
TPig ©   (2002-09-24 16:28) [2]

Можно так:

function LoadDrives(out DriveList: TStringList): Boolean;
var
lpBuf: Pointer;
dwReaded: DWORD;
dwTotal: DWORD;
p: PWideChar;
i: DWORD;
csDrive: String;
bIsACL: Boolean;
prefmaxlen: Integer;
resume_handle: LPDWORD;
Begin
Result:=(DriveList<>nil);
if not Result then exit;
NetApiBufferAllocate(1000,lpBuf);
prefmaxlen:=-1;
dwReaded:=0;
dwTotal:=0;
if(NetServerDiskEnum( nil,
0,
@lpBuf,
prefmaxlen,
@dwReaded,
@dwTotal,
nil)= NERR_Success ) then begin
p:=lpBuf;
for i:=0 to dwReaded-1 do begin
csDrive:=WideCharLenToString(p,2);
csDrive:=csDrive + "\";
DriveList.Add(csDrive);
p:=p+3;
end;
Result:=TRUE;
end;
NetApiBufferFree(lpBuf);
end;


{
Получаем информацию о дисковом разделе
}

function GetPartitionTypeEx( szName: LPCTSTR;
out csFileSystemName: String;
out bIsACL: Boolean): Integer;
var
szVolumeNameBuffer: array [0..MAX_PATH+1] of Char;
dwMaximumComponentLength: DWORD;
dwFileSystemFlags: DWORD;
dwVolumeSerialNumber: DWORD;
szFileSystemNameBuffer: array [0..MAX_PATH+1] of Char;
begin
if( GetVolumeInformation( szName,
szVolumeNameBuffer,
MAX_PATH,
@dwVolumeSerialNumber,
@dwMaximumComponentLength,
@dwFileSystemFlags,
szFileSystemNameBuffer,
MAX_PATH ) ) then begin
csFileSystemName:=szFileSystemNameBuffer;
bIsACL:=( dwFileSystemFlags and FS_PERSISTENT_ACLS )=FS_PERSISTENT_ACLS;
end
else begin
csFileSystemName:="unknown";
bIsACL:=FALSE;
end;
Result:=1;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.11.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
1-82739
Zike
2002-11-15 11:01
2002.11.25
Получение нескольких Результатов функции


8-82880
ACR
2002-08-03 23:45
2002.11.25
Streming Video


14-82947
Пиноккио
2002-11-05 21:33
2002.11.25
Помогите - NAN


14-82981
Shadow
2002-11-04 17:05
2002.11.25
Сайты..


1-82704
Linder
2002-11-14 13:53
2002.11.25
Динамический массив