Як отримати список фізичних дисків і їх тип

Дякую ща буду дивитися.

Ще раз спасибі, але це трохи не те, мені потрібно побачити диски зі змінними Ностел (флоп, usb пристрої. Дізнатися чи є диск, диском зі змінним носієм можна GetDriveType, а ось як дізнатися що це за носій, флоп, картрейдер, флеш модуль ?


> Мені потрібно побачити диски зі змінними Ностел

Очевидно про це треба писати в першому питанні. Щоб я не сильно напружувався, викладаючи посилання.

Силлка дуже допомогла, отримати відповіді на інші питання :)
А ось по другій частині тиша.

Щось на зразок цього :

begin
# XA0; case GetDriveType ( "C:") of
# XA0; # XA0; 0: ShowMessage ( "The drive type can not be determined");
# XA0; # XA0; 1: ShowMessage ( "The root directory does not exist");
# XA0; # XA0; DRIVE_REMOVABLE: ShowMessage ( "The disk can be removed");
# XA0; # XA0; DRIVE_FIXED: ShowMessage ( "The disk can not be removed");
# XA0; # XA0; DRIVE_REMOTE: ShowMessage ( "The drive is remote (network) drive");
# XA0; # XA0; DRIVE_CDROM: ShowMessage ( "The drive is a CD-ROM drive");
# XA0; # XA0; DRIVE_RAMDISK: ShowMessage ( "The drive is a RAM disk");
# XA0; end;

Що щось подібне до цього є в стандартній довідці. Це вже реалізовано. Питання в іншому, диск DRIVE_REMOVABLE, я можу отримати список розділів на ньому (див приклад від Ігоря Шевченка), можу дізнатися диск в пристрій чи ні, але мені ще треба знати що це за пристрій, з CDROM все ясно, але як дізнатися що за носій якщо це: флоп, флеш карта, картрідер і тим більше який тип карти в нього вставлений.

там ціла прірва бібліотек і компонентів


> # XA0; [8] cranium # XA0; (05.07.05 00:45)
> Але як дізнатися що за носій
> Якщо це: флоп, флеш карта, картрідер і тим більше який
> Тип карти в нього вставлений.

А з чого ви взяли, що це завдання хоча-б теоретично має рішення?

> CDROM все ясно

Ну, якщо все ясно, то ви можете загребти чималі гроші за ідею про те, як побудувати алгоритм захисту, обманює абсолютно все емулятори CD-приводів.


> Але як дізнатися що за носій якщо це: флоп, флеш карта,
> картрідер

Флоппі від не флоппі я відрізняв так:

# XA0; # XA0; DRIVE_REMOVABLE:
# XA0; # XA0; # XA0; begin
# XA0; # XA0; # XA0; # XA0; System.Delete (DrivePath, 3, 1);
# XA0; # XA0; # XA0; # XA0; if QueryDosDevice (PChar (DrivePath), Buffer, SizeOf (Buffer)) = 0 then
# XA0; # XA0; # XA0; # XA0; # XA0; Result.DriveType: = dtError
# XA0; # XA0; # XA0; # XA0; else if (SameText (Buffer, "\ Device \ Floppy0")) then
# XA0; # XA0; # XA0; # XA0; # XA0; Result.DriveType: = dtFloppy
# XA0; # XA0; # XA0; # XA0; else
# XA0; # XA0; # XA0; # XA0; # XA0; Result.DriveType: = dtRemovable;
# XA0; # XA0; # XA0; end;
# XA0; # XA0; else
# XA0; # XA0; # XA0; Result.DriveType: = dtError;
# XA0; # XA0; end;

Тип носія можна встановити і більш точно. Є якийсь IOCTL код, зараз лінь шукати. Там можна розрізнити і OMD драйв, і ZIP, і флоппі.

Код зветься щось на зразок IOCTL_GET_MEDIA_TYPE. Це я абсолютно на вскидку, не пам'ятаю точно.

Пам'ять: 0.74 MB
Час: 0.047 c

Схожі статті