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


Функция 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_XXXX, возвращенное драйвером системного порта, или одно из следующих значений:

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 REQUEST VOLUME ELEMENT ADDRESS.)

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

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

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть 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