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


Функция ChangerQueryVolumeTags (mcd.h)

ChangerQueryVolumeTags обрабатывает аспекты IRP, относящиеся к устройству, с кодом IOCTL IOCTL_CHANGER_QUERY_VOLUME_TAGS.

Синтаксис

NTSTATUS ChangerQueryVolumeTags(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp
);

Параметры

[in] DeviceObject

Указатель на объект устройства, представляющий средство изменения.

[in] Irp

Указатель на IRP.

Возвращаемое значение

Если метод изменения поддерживает получение сведений тега тома, ChangerQueryVolumeTags возвращает значение STATUS_XXX, возвращаемое драйвером системного порта или одним из следующих значений:

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INSUFFICIENT_RESOURCES

Если изменение не поддерживает получение сведений тега тома, changerQueryVolumeTags возвращает STATUS_INVALID_DEVICE_REQUEST.

Замечания

Эта подпрограмма объединяет функциональные возможности двух команд SCSI: SEND VOLUME TAGS и REQUEST VOLUME ELEMENT ADDRESS. Эта подпрограмма требуется.

ChangerQueryVolumeTags извлекает сведения тега тома для указанных элементов. Кроме того, его можно использовать для определения или очистки сведений тега тома, если изменение поддерживает эти операции. Флаг CHANGER_VOLUME_IDENTIFICATION в элементе Features0 структуры GET_CHANGER_PARAMETERS указывает, поддерживает ли меняющий эту функцию.

Драйвер класса changer проверяет длину входного и выходного буфера в расположении стека ввода-вывода перед вызовом ChangerQueryVolumeTags. Irp—>SystemBuffer указывает на структуру CHANGER_SEND_VOLUME_TAG_INFORMATION, которая указывает элементы, операцию выполнения и шаблон, указывающий идентификатор тома для поиска или задания.

ChangerQueryVolumeTags сначала проверяет код действия для неподдерживаемых операций и возвращает STATUS_INVALID_DEVICE_REQUEST для тех, кто он не поддерживает. Затем он создает SRB с CDB, чтобы указать адрес начального элемента для конкретного устройства и отправляет его в драйвер системного порта, передав шаблон идентификатора тома в качестве параметра. (Для изменения SCSI драйвер миникласса использует команду SCSI SEND VOLUME TAG.)

Если первый SRB успешно выполнен, ChangerQueryVolumeTags создает второй SRB с CDB для передачи результатов предыдущего SRB. (Для смены SCSI драйвер миникласса использует адрес элемента ТОМа запроса SCSI.)

ChangerQueryVolumeTags затем заполняет структуру READ_ELEMENT_ADDRESS_INFO в Irp—>AssociatedIrp.SystemBuffer, указывающее количество элементов, для которых были переданы сведения тега тома, и сведения для каждого элемента.

После заполнения системного буфера ChangerQueryVolumeTags задает поле Information в блоке состояния ввода-вывода число байтов, записанных в буфер, прежде чем вернуться к драйверу класса changer.

Требования

Требование Ценность
целевая платформа Настольный
заголовка mcd.h (включая Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL

См. также

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO