Информация о логических дисках
Информация о логических дисках
Теперь об информации о дисках:
исчерпывающую информацию по этому поводу дает функция 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_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;
Автор Serious
Взято с Vingrad.ru