Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрет открытия лотка CD-DVD, Програмно запретит открытие лотка CD-DVD 
:(
    Опции темы
samrisbe
Дата 27.5.2011, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 27.5.2011

Репутация: нет
Всего: нет



Доброго всем здравия! Уважаемые опытные программисты! Подскажите новичку способ програмно запретить открытие дверцы CD-DVD привода.
Заранее спасибо! smile 
PM MAIL   Вверх
volatile
Дата 27.5.2011, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 3
Всего: 85



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

Но, вот против иголки, ничего не поможет  
У любого CD/DVD на морде есть отверстие для иголки. Если туда иголкой нажать, откроется любой привод даже, без питания.smile

Ну и возникает вопрос, а зачем?


PM MAIL   Вверх
samrisbe
Дата 27.5.2011, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 27.5.2011

Репутация: нет
Всего: нет



Надо чтоб все кому не лень что попало не совали. Можно еще паралельно оключить его типа драйвер и будет гламурно... smile 
PM MAIL   Вверх
borisbn
Дата 27.5.2011, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Интересно, почему в этом разделе ? В Builder'е как-то по-другому управляют CD-ROM'ом ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
samrisbe
Дата 27.5.2011, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 27.5.2011

Репутация: нет
Всего: нет



Цитата(borisbn @ 27.5.2011,  09:35)
Интересно, почему в этом разделе ? В Builder'е как-то по-другому управляют CD-ROM'ом ?

А в каком разделе? А какая разнице где и как?
PM MAIL   Вверх
borisbn
Дата 27.5.2011, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(samrisbe @  27.5.2011,  10:19 Найти цитируемый пост)
А в каком разделе? А какая разнице где и как?

Да не... никакой... Но правильнее было бы сюда (http://forum.vingrad.ru/forum/c-c++db-database.html) или сюда (http://forum.vingrad.ru/forum/c-c++network.html). всё равно ж...
It was a sarcasm, если чо


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
migddk
Дата 27.5.2011, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



Выдвинуть лоток с носителем можно функцией DeviceIoControl с кодом IOCTL_STORAGE_EJECT_MEDIA:

Код

DeviceIoControl (hDevice, IOCTL_STORAGE_EJECT_MEDIA,
                 NULL, 0, NULL, 0, &ReturnedBytes, NULL);

Вызов функции DeviceIoControl с кодом IOCTL_STORAGE_MEDIA_REMOVAL позволяет блокировать или разблокировать возможность выдвижения лотка. Подобный вызов в синхронном режиме имеет вид:

Код

PREVENT_MEDIA_REMOVAL PMR;
...
DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL,
                 &PMR, sizeof(PMR), NULL, 0, &ReturnedBytes,
                 NULL);


Входным буфером служит структура типа _PREVENT_MEDIA_REMOVAL, объявленная в модуле winioctl.h следующим образом:

typedef struct _PREVENT_MEDIA_REMOVAL {
    BOOLEAN PreventMediaRemoval;
} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;

Задание в этой структуре значения true поля PreventMediaRemoval блокирует выдвижение лотка, а задание значения false снимает блокировку. Если выдвижение лотка заблокировано, то носитель нельзя извлечь и вручную. Более того, если приложение закрылось, а блокировка не была снята, то устройство так и останется заблокированным. Так что будьте осторожны с этой командой. Если в приложении предусмотрено использование этой команды, то полезно во избежание неприятностей при закрытии приложения на всякий случай снимать блокировку.
Если подряд выполнено несколько вызовов DeviceIoControl, задающих блокировку, то устройство разблокируется только после такого же количества вызовов, снимающих блокировку. Так что если вы хотите гарантированно выдвинуть лоток, независимо от числа предшествующих блокировок, это можно сделать так:
Код

PREVENT_MEDIA_REMOVAL PMR;
PMR.PreventMediaRemoval = false;
while(! DeviceIoControl (hDevice, IOCTL_STORAGE_EJECT_MEDIA,
                         NULL, 0, NULL, 0, &ReturnedBytes,
                         NULL))
  DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL,
                   &PMR, sizeof(PMR), NULL, 0, &ReturnedBytes,
                   NULL);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.