Главная страница
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.018 c
3-82664
Leonon
2002-11-06 12:04
2002.11.25
Не отображаются изменения в гриде!?


4-83084
maxim_m
2002-10-12 23:16
2002.11.25
Help


1-82829
Новичок
2002-11-14 09:32
2002.11.25
TreeView


1-82765
Gonzalez
2002-11-15 08:55
2002.11.25
winoldap


3-82660
OlegE
2002-11-06 14:45
2002.11.25
Yaffil ?