IOCTL_STORAGE_CHECK_VERIFY IOCTL (ntddstor.h)
Определяет, изменился ли носитель на устройстве со съемным носителем, открытом вызывающей стороной для доступа на чтение или запись. Если доступ на чтение или запись к устройству не требуется, вызывающий объект может повысить производительность, открыв устройство с FILE_READ_ATTRIBUTES и отправивзапрос IOCTL_STORAGE_CHECK_VERIFY2 .
Дополнительные сведения см. в разделе Поддержка съемных носителей.
Основной код
Входной буфер
Нет.
Длина входного буфера
Нет.
Выходной буфер
При необходимости для дисков и компакт-дисков 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), он должен:
- Задайте для параметра Information значение 0.
- Задайте для свойства Состояние значение STATUS_VERIFY_REQUIRED.
- Установите флаг DO_VERIFY_VOLUME в DeviceObject.
- Вызовите IoCompleteRequest с входным IRP.
- Задайте для свойства Состояние значение STATUS_IO_DEVICE_ERROR.
- Задайте для параметра Information значение 0.
- Вызов ioCompleteRequest с помощью IRP.
Для драйвера ленты для поля Сведения задано значение ноль, а для поля Состояние задано значение STATUS_SUCCESS или, возможно, STATUS_VERIFY_REQUIRED.
Требования
Требование | Значение |
---|---|
Заголовок | ntddstor.h (включая Ntddstor.h) |