Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

USB


imbalacedees ©   (2006-08-04 17:44:00) 

Доброго времени суток.
К примеру подключили USB устройство, как его можно программно отключить. Как отлавливать момент подключения - разобрался. Как получать список устройств - тоже разобрался. А вот как отключить определенное устройство так и не смог понять.
Может кто ссылки подкинет.
С уважением
За ранее спасибо


ArtemESC   (2006-08-10 16:55:00) [1]

Кажеться она равно этому:
$2D4808


ArtemESC   (2006-08-10 16:50:00) [2]

>>При компиляции - ошибка, говорит IOCTL_STORAGE_EJECT_MEDIA - мол нет >>такой константы

Узнай просто ее значение в си++ и подставь...


imbalacedees   (2006-08-10 16:36:00) [3]

Всем спаибо.
Еще вопрос.
При компиляции - ошибка, говорит IOCTL_STORAGE_EJECT_MEDIA - мол нет такой константы


clickmaker   (2006-08-10 10:51:00) [4]

volname := '\\.\H:';

слэши дублируются только в Си, там это спец-символ


> & - хрен знает что такое...

это операция взятия адреса. В дельфи @. Но многие апи-функции портированы с var-параметрами, поэтому там не надо никаких приставок


ArtemESC   (2006-08-10 00:16:00) [5]

volname = "\\\\.\\H:"; забыл

volname := PChar('\\\\.\\H:');


ArtemESC   (2006-08-10 00:12:00) [6]

Что-то вроде такого

hVol: Handle;
res: boolean;
volname: PChar;

nBytesReturned: integer;

hVol := CreateFile(volname,
                    GENERIC_READ or GENERIC_WRITE,
                                      FILE_SHARE_READ or FILE_SHARE_WRITE,
                                      NULL,
                                      OPEN_EXISTING,
                                      FILE_ATTRIBUTE_NORMAL,
                                      0);
if ( hVol INVALID_HANDLE_VALUE ) then
     напечатать о невалидности

nBytesReturned := 0;

res := DeviceIoControl(hVol,IOCTL_STORAGE_EJECT_MEDIA ,
                                              NULL,
                                              0,
                                              NULL,
                                              0,
                                              &nBytesReturned,
                                              NULL);

& - хрен знает что такое...


imbalacedees   (2006-08-10 00:08:00) [7]

Может кто поможет перевести на Delphi

HANDLE hVol;
BOOL   res;
 char   *volname;
  volname = "\\\\.\\H:";
   
   hVol = CreateFile(volname,
                     GENERIC_READ || GENERIC_WRITE,
                                       FILE_SHARE_READ || FILE_SHARE_WRITE,
                                       NULL,
                                       OPEN_EXISTING,
                                       FILE_ATTRIBUTE_NORMAL,
                                       0);
   
   if( hVol == INVALID_HANDLE_VALUE )
   {
       printf("Unable to open volume %s:\n", volname);
//        ErrShow(GetLastError());
       return;
   }

   DWORD nBytesReturned = 0;
   res = DeviceIoControl(hVol,IOCTL_STORAGE_EJECT_MEDIA ,
                                               NULL,
                                               0,
                                               NULL,
                                               0,
                                               &nBytesReturned,
                                               NULL);

IOCTL_STORAGE_EJECT_MEDIA - вот здесь компилятор Delphi пишет, что не может найти такую константу
BytesReturned - Что это такое?


GanibalLector   (2006-08-09 00:36:00) [8]

Тут несколько вариантов.
Первый :зная букву флешки, вызываем CreateFile,а затем DeviceIoContro с
IOCTL_STORAGE_EJECT_MEDIA.
Второй : послать BroadcastSystemMessage с параметром DBT_DEVICEQUERYREMOVE

З.Ы. Сам,естественно,не проверял ;)


imbalacedees   (2006-08-05 00:45:00) [9]

Эту программу видел.
Просто такая ситуация - мне нужно программно ограничить подключение флэшек, за исключением 1-2(к примеру с определенными серийными номерами). Может что подскажете?


clickmaker   (2006-08-04 18:55:00) [10]

http://net.mpei.ru/lang/rus/faqw2kxp/jsifaq/rh8496.htm


Наверх

Титульная страница Поиск, карта сайта Написать письмо