Главная страница
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-82729
sen
2002-11-15 08:52
2002.11.25
Узнать, какая русская буква нажата


14-82985
Undert
2002-11-06 21:09
2002.11.25
Люди ! Есть идеа по взаимной раскрутки сайтов ! ...


8-82868
Alex_E
2002-07-20 10:31
2002.11.25
Конвертация bmp- ico


3-82680
saniok
2002-11-06 19:36
2002.11.25
А что, больше 7-ми в парадоксе нельзя?


4-83056
Werewolfru
2002-10-11 17:21
2002.11.25
Как поменять HINT у иконки в TRAY`е