Содержание материала

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

 

исчерпывающую информацию по этому поводу дает функция 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 - (устройство представляет собой сжатый диск)

 

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

Code:

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;

 

 


 

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

Code:

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_WRITE, nil,

                               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

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить