Главная страница
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.026 c
14-82944
sanilo
2002-11-06 10:51
2002.11.25
Про W2K и программки под DOS :)


3-82667
Виталий Панасенко
2002-11-06 12:32
2002.11.25
GUARD под


1-82746
Sectey
2002-11-15 11:20
2002.11.25
Организация MDI проектов или меню, толбары в MDI приложениях.


7-83035
Ш-К
2002-09-13 10:43
2002.11.25
Как программно реализовать ЕРР?


14-82910
MixerPro
2002-11-05 08:32
2002.11.25
Начинаю писать на IBase