IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)
Блокирует устройство, чтобы предотвратить удаление носителя. Если драйвер может предотвратить удаление носителя во время использования диска, драйвер отключает или включает механизм, который извлекает носитель, тем самым блокируя диск. Вызывающий объект должен открыть устройство с FILE_READ_ATTRIBUTES для отправки этого запроса.
В отличие от IOCTL_STORAGE_MEDIA_REMOVAL, драйвер отслеживает запросы IOCTL_STORAGE_EJECTION_CONTROL вызывающим абонентом и игнорирует запросы разблокировки, для которых он не получил запрос блокировки от того же вызывающего средства, тем самым предотвращая разблокировку диска другими вызывающими пользователями.
Драйвер для съемных носителей может поддерживать этот протокол IOCTL:
- Сохраняйте количество блокировок, помеченные вызывающим объектом, в расширении объекта устройства.
- Сохраняйте количество блокировок на физическое устройство.
- При вызове с этим IOCTL, если флаг, чтобы предотвратить удаление носителя, увеличьте число; Если флаг очищается, и драйвер ранее получил запрос блокировки от того же вызывающего средства, урежение счетчика.
- Запретить удаление носителя, если все счетчики блокировок не равны нулю.
Чтобы обеспечить правильность освобождения блокировок удаления мультимедиа, водитель класса отслеживает вызывающих лиц, которые блокируют носитель с помощью IOCTL_STORAGE_EJECTION_CONTROL. Если вызывающий объект завершает работу без разблокировки устройства, драйвер класса разблокирует устройство.
Основной код
Входной буфер
Буфер с Irp->AssociatedIrp.SystemBuffer содержит логическое значение, а TRUE, указывающее, что драйвер должен заблокировать носитель на диске.
Длина входного буфера
Длина логическое значение.
Выходной буфер
Никакой.
Длина выходного буфера
Никакой.
Блок состояния
Поле сведений равно нулю. Поле состояния имеет значение STATUS_SUCCESS или, возможно, STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE или STATUS_DEVICE_NOT_CONNECTED.
Требования
Требование | Ценность |
---|---|
заголовка | ntddstor.h (include Ntddstor.h) |