Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

USB   Найти похожие ветки 

 
imbalacedees   (2006-08-04 17:44) [0]

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


 
clickmaker ©   (2006-08-04 18:55) [1]

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


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

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


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

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

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


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

Может кто поможет перевести на 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 - Что это такое?


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

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

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);

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


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

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

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


 
clickmaker ©   (2006-08-10 10:51) [7]

volname := "\\.\H:";

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


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

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


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

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


 
ArtemESC ©   (2006-08-10 16:50) [9]

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

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


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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
2-1155559354
UMU
2006-08-14 16:42
2006.09.03
FindDialog


15-1155063322
Ketmar
2006-08-08 22:55
2006.09.03
delphi2006 -- чего нового по сравнению с d7.


1-1153412058
kaif
2006-07-20 20:14
2006.09.03
Так как все-таки перекомпилировать рантайм библиотеки VCL?


2-1155499409
RASkov
2006-08-14 00:03
2006.09.03
Динмассив


11-1132301273
BaryVetaL
2005-11-18 11:07
2006.09.03
TKOLTCPClient и TKOLTCPServer вопрос не для новичков...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский