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


IOCTL_STORAGE_CHECK_VERIFY IOCTL (ntddstor.h)

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

Дополнительные сведения см. в разделе Поддержка съемных носителей.

Основной код

IRP_MJ_DEVICE_CONTROL

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

Нет.

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

Нет.

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

При необходимости для дисков и компакт-дисков Irp-AssociatedIrp.SystemBuffer> указывает на буфер для получения количества изменений носителя. Драйвер заполняет этот буфер, только если параметр Parameters.DeviceIoControl.OutputBufferLength был ненулевым и возвращаемое значение STATUS_SUCCESS. Счетчик изменений носителя — это ULONG, указывающий, сколько раз изменялся носитель с момента запуска драйвера.

В противном случае этот запрос не имеет выходных данных.

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

При необходимости для дисков и компакт-дисков Parameters.DeviceIoControl.OutputBufferLength в расположении стека ввода-вывода IRP указывает размер буфера в байтах, который должен иметь >значение = sizeof(ULONG). Это поле равно нулю, если необязательный буфер не указан.

В противном случае этот запрос не имеет входных данных.

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

Если драйвер диска или компакт-диска не указывает на изменение носителя, драйвер устанавливает для поля Состояние значение STATUS_SUCCESS. Кроме того, если был указан необязательный буфер изменения носителя, драйвер возвращает число изменений мультимедиа в буфере по адресу Irp-AssociatedIrp.SystemBuffer> и задает для поля Information значение sizeof(ULONG). Если необязательный буфер изменения носителя не указан, драйвер устанавливает значение Information равным нулю.

Если драйвер обнаруживает, что носитель изменился и том подключен (VPB_MOUNTED задан в VPB), он должен:

  1. Задайте для параметра Information значение 0.
  2. Задайте для свойства Состояние значение STATUS_VERIFY_REQUIRED.
  3. Установите флаг DO_VERIFY_VOLUME в DeviceObject.
  4. Вызовите IoCompleteRequest с входным IRP.
Если драйвер обнаруживает, что носитель изменился, но том не подключен, драйвер не должен задавать бит DO_VERIFY_VOLUME. Вместо этого он должен выполнять следующие действия:
  1. Задайте для свойства Состояние значение STATUS_IO_DEVICE_ERROR.
  2. Задайте для параметра Information значение 0.
  3. Вызов ioCompleteRequest с помощью IRP.
Если драйвер обнаруживает ошибку, например STATUS_BUFFER_TOO_SMALL, STATUS_INSUFFICIENT_RESOURCES или ошибку устройства, он устанавливает значение Information равным нулю и задает соответствующее значение ошибки в поле Состояние .

Для драйвера ленты для поля Сведения задано значение ноль, а для поля Состояние задано значение STATUS_SUCCESS или, возможно, STATUS_VERIFY_REQUIRED.

Требования

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

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

IOCTL_STORAGE_CHECK_VERIFY2