· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› "Залокить" локальный диск.

Посл.отвђт Сообщенiе


Дата: Май 16, 2004 18:40:44

Здравствуйте!

На днях взялся написать утилиту для
запрещения доступа к диску (ам) под
Windows 2000/XP, используя функцию
DeviceIoControl. Для начала я поробовал
и "залокил" дисковод A:\ - всё было
отлично, но запретить доступ к диску
E:\ (не системному) у меня не получилось.
Вот какой констукцией я пользуюсь, как
говорил, на A:\ работает:
invoke CreateFile, ADDR E_DRIVE, GENERIC_READ or GENERIC_WRITE, 0, 0, CREATE_ALWAYS or OPEN_EXISTING, 0, 0
mov drive_handle, eax
invoke DeviceIoControl, drive_handle, FSCTL_LOCK_VOLUME, 0, 0, 0, 0, ADDR returned_byte_count, 0


В отладчике я получаю INVALID_HANDLE...
Подскажите, пожалуйста, что нужно сделать,
чтобы можно было "залокить" любой диск.

PS. К CD-ROM (физическим и виртуальным)
также можно запретить доступ.

Заранее спасибо!
1990


Дата: Май 17, 2004 00:46:58

из MSDN This operation fails if there are any open files on the volume. Conversely, success of this operation indicates there are no open files.


Дата: Май 17, 2004 10:01:08

DaemoniacaL
Спасибо! А никаких других методов для "злокивания" не существует?


Дата: Май 17, 2004 14:52:21

Hook DeviceIOControlFile


Дата: Май 17, 2004 21:20:02

CARDINAL
А точнее и для чего нужно*?


Дата: Май 20, 2004 03:45:54

1990
Пишешь модуль режима ядра, а дальше перехват NativeAPI.
Просто, имеет смысл его создавать, для подобной задачи, я думаю.


Дата: Май 20, 2004 03:58:32

1990
Если есть:
- любой открытый файл на E:, а таких файлов множество,
к примеру на диске E: создается временный скрытый файл
при вставлении CD-ROM на несколько секунд, да и система
восстановления XP вносит свой вклад.
- если диск E: - это не 2й физический диск (логический),
то иногда тоже бывают проблемы. (GENERIC_READ or
GENERIC_WRITE и FSCTL_LOCK_VOLUME). Тут уже ошибка
в самой подфункции драйвера DeviceIoControl.
- Возможна блокировка диска на стадии загрузки: написав
драйвер. Так происходит к примеру конверсия из FAT в
NTFS.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.058