Поделиться через


IOCTL_STORAGE_MEDIA_REMOVAL IOCTL (ntddstor.h)

Блокирует устройство, чтобы предотвратить удаление носителя. Если драйвер может предотвратить удаление носителя во время использования диска, он отключает или включает механизм, который извлекает носитель на устройстве. Вызывающий объект открыл доступ для чтения или записи.

В отличие от IOCTL_STORAGE_EJECTION_CONTROL, для которого драйвер отслеживает запросы вызывающего абонента, драйвер игнорирует запросы на разблокировку IOCTL_STORAGE_MEDIA_REMOVAL только в том случае, если количество блокировок уже равно нулю, что позволяет любому вызывающему объекту разблокировать диск.

Драйвер для такого устройства со съемным носителем, который может поддерживать этот IOCTL, должен выполнить следующие действия:

  1. Сохраните количество блокировок в расширении объекта устройства.
  2. Сохраните количество блокировок для каждого физического устройства.
  3. Если при вызове с этим IOCTL установлен флаг предотвращения удаления носителя, увеличивается число; Если флажок недоступен, уменьшение счетчика.
  4. Запретить удаление носителя, если количество блокировок не равно нулю.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Буфер в Irp-AssociatedIrp.SystemBuffer> содержит логическое значение, а значение TRUE указывает, что драйвер должен заблокировать носитель на диске.

Длина входного буфера

Длина логического объекта.

Выходной буфер

Нет.

Длина выходного буфера

Нет.

Блок состояния

Поле Сведения равно нулю. Для поля Состояние задано значение STATUS_SUCCESS или, возможно, STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE или STATUS_DEVICE_NOT_CONNECTED.

Требования

Требование Значение
Заголовок ntddstor.h (включая Ntddstor.h)

См. также раздел

IOCTL_STORAGE_EJECTION_CONTROL