Функция 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 |