Delphi - база знаний

Информация о логических дисках


Информация о логических дисках



Теперь об информации о дисках:



исчерпывающую информацию по этому поводу дает функция GetVolumeInformation,
посмотри help, там все понятно (там и серийный номер диска, и тип файловой системы, и прочее и прочее).

Вот параметры FileSysFlags:



FS_CASE_IS_PRESERVED - (при записи на диск сохраняется регистр букв в его имени)
FS_CASE_SENSITIVE - (поддерживается поиск файлов с учетом регистра букв)
FS_UNICODE_STORED_ON_DISK - (поддерживается сохранение имен файлов в UniCode)
FS_PERSISTENT_ACLS - (поддерживаются списки контроля доступа (ACL). Только для NTFS)
FS_FILE_COMPRESSION - (поддерживается сжатие файлов на уровне системы)
FS_VOL_IS_COMPRESSED - (устройство представляет собой сжатый диск)

Определение типа диска:

function GetDriveType (Drive : byte) : string;
  var
    DriveLetter : Char;
    DriveType : uInt;
begin
DriveLetter := Char (Drive + $41);  
DriveType := GetDriveType (PChar(DriveLetter + ':\'));  
case DriveType of  
0: Result := '?';  
1: Result := 'Path does not exists';  
Drive_Removable: Result := 'Removable';  
Drive_Fixed: Result := 'Fixed';  
Drive_Remote: Result := 'Remote';  
Drive_CDROM: Result := 'CD-ROM';  
Drive_RamDisk: Result := 'RAMDisk'  
else Result := 'Unknown';  
end;  
end;

Может так попробовать:

procedure TMainForm.btnGetHandleClick(Sender: TObject);
var DriveHandle : HWND;  
begin
case Win32Platform of  
  VER_PLATFORM_WIN32_NT:  
    begin  
      DriveHandle := CreateFile ('\\.\Scsi0:', GENERIC_READ+GENERIC_WRITE,  
                                FILE_SHARE_READ+FILE_SHARE_WRITEnil,   
                                OPEN_EXISTING, 0, 0);  
      if DriveHandle <> INVALID_HANDLE_VALUE then  
        MessageBox (MainForm.Handle, PChar(IntToStr(DriveHandle)),  
                   PChar('Here is your handle:'), MB_ICONINFORMATION)  
      else  
         MessageBox (MainForm.Handle, PChar('Error!'), PChar('Error'),   
                     MB_ICONERROR);  
    end;  
  VER_PLATFORM_WIN32_WINDOWS:  
begin  
  DriveHandle := CreateFile ('\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0 );  
  if DriveHandle <> INVALID_HANDLE_VALUE then  
    MessageBox (MainForm.Handle, PChar(IntToStr(DriveHandle)),   
                PChar('Here is your handle:'), MB_ICONINFORMATION)  
  else  
    MessageBox (MainForm.Handle, PChar('Error!'), PChar('Error'), MB_ICONERROR);  
end;  
end; // case  
end;

Автор Serious
Взято с Vingrad.ru




Содержание раздела