![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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