Обратный инженер
Сообщения: 644
Благодарности: 47
|
Профиль
|
Отправить PM
| Цитировать
KAB
По-моему,я нашёл,что тебе надо.А именно:
Цитата "Техника защиты компакт-дисков от копирования" Криса Касперски:
Взаимодействие с прикладными приложениями обычно осуществляется посредством специальных кодов IOCTL, передаваемых драйверу функцией DeviceIoControl.
...можно воспользоваться IOCTL-командой блокировки лотка - IOCTL_CDROM_MEDIA_REMOVAL (а вот её непосредственное значение: 0х24804)...Вплоть до момента разблокировки лотка извлечь диск можно разве что булавкой или перезагрузив операционную систему.
Дело в том,что система не требует,чтобы разблокирование выполнялось в контексте того процесса,который выполнил блокирование.Она просто ведёт счёт блокировок, и если тот равен нулю, - лоток свободен.Соответственно, если счёт блокировок равен,например,шести - мы должны шесть раз вызывать команду разблокирования, прежде чем лазерный диск удасться извлечь на свет божий.
|
Код: 
// Утилита позволяет манипулировать счётчиком блокировок диска.
// Аргумент командной строки "+" увеличивает значение счётчика на единицу,
// ...а "-" - уменьшает.
#include <windows.h>
#include <winioctl.h>
#include <stdio.h>
#define IOCTL_CDROM_MEDIA_REMOVAL 0x24804
main(int argc, char **argv)
{
BOOL act;
DWORD xxxx;
HANDLE hCD;
PREVENT_MEDIA_REMOVAL pmrLockCDROM;
// Проверка аргументов
if (argc<3) {printf("USAGE: CD.lock.exe \\\\.\\X: {+, -}\n"); return -1; }
if (argv[2] [0] == '+') act = TRUE; // УВЕЛИЧИТЬ СЧЁТЧИК БЛОКИРОВОК
else if (argv[2] [0] == '-') act = FALSE; // УМЕНЬШИТЬ СЧЁТЧИК БЛОКИРОВОК
else {printf(stderr, "-ERR: in arg %c\n" , argv[2] [0]); return -1; }
// Получить дескриптор устройства
hCD = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if (hCD == INVALID_HANDLE_VALUE) {printf(" -ERR: get CD-ROM\n"); return -1; }
// Заблокировать/разблокировать лоток CD-ROM'a
pmrLockCDROM.PreventMediaRemoval = act;
DeviceIoControl(hCD, IOCTL_CDROM_MEDIA_REMOVAL,
&pmrLockCDROM, SizeOf(pmrLockCDROM), NULL, 0, &xxxx, NULL);
}
...ох уж этот Си...
|
-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций
Последний раз редактировалось DillerInc, 03-09-2005 в 17:30.
Причина: Исправил пару опечаток
Отправлено: 16:36, 31-08-2005
| #8
|