Función ChangerQueryVolumeTags (mcd.h)

ChangerQueryVolumeTags controla los aspectos específicos del dispositivo de un IRP de control de dispositivo con el código IOCTL de IOCTL_CHANGER_QUERY_VOLUME_TAGS.

Sintaxis

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

Parámetros

[in] DeviceObject

Puntero al objeto de dispositivo que representa el modificador.

[in] Irp

Puntero al IRP.

Valor devuelto

Si el modificador admite la recuperación de información de etiquetas de volumen, ChangerQueryVolumeTags devuelve el valor STATUS_XXX devuelto por el controlador de puerto del sistema o uno de los siguientes valores:

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INSUFFICIENT_RESOURCES

Si el modificador no admite la recuperación de información de etiquetas de volumen, ChangerQueryVolumeTags devuelve STATUS_INVALID_DEVICE_REQUEST.

Comentarios

Esta rutina combina la funcionalidad de dos comandos SCSI: SEND VOLUME TAGS y REQUEST VOLUME ELEMENT ADDRESS. Esta rutina es necesaria.

ChangerQueryVolumeTags recupera información de etiquetas de volumen para los elementos especificados. También se puede usar para definir o borrar información de etiquetas de volumen si el modificador admite estas operaciones. La marca CHANGER_VOLUME_IDENTIFICATION del miembro Features0 de la estructura GET_CHANGER_PARAMETERS indica si el modificador admite esta funcionalidad.

El controlador de clase del modificador comprueba las longitudes del búfer de entrada y salida en la ubicación de la pila de E/S antes de llamar a ChangerQueryVolumeTags. Irp-SystemBuffer> apunta a una estructura de CHANGER_SEND_VOLUME_TAG_INFORMATION que indica los elementos, la operación que se va a realizar y una plantilla que especifica el identificador de volumen que se va a buscar o establecer.

ChangerQueryVolumeTags comprueba primero el código de acción de las operaciones no admitidas y devuelve STATUS_INVALID_DEVICE_REQUEST para aquellos que no admite. A continuación, compila una SRB con un CDB para indicar la dirección específica del dispositivo del elemento inicial y la envía al controlador de puerto del sistema, pasando la plantilla de identificador de volumen como parámetro. (Para un modificador SCSI, el controlador de miniclase usa el comando SCSI SEND VOLUME TAG).

Si la primera SRB se realiza correctamente, ChangerQueryVolumeTags compila un segundo SRB con una CDB para transferir los resultados de la SRB anterior. (Para un modificador SCSI, el controlador de miniclase usa el comando SCSI REQUEST VOLUME ELEMENT ADDRESS).

A continuación, ChangerQueryVolumeTags rellena una estructura de READ_ELEMENT_ADDRESS_INFO en Irp-AssociatedIrp.SystemBuffer > que indica el número de elementos para los que se transfirió la información de etiqueta de volumen y la información de cada elemento.

Después de rellenar el búfer del sistema, ChangerQueryVolumeTags establece el campo Información en el bloque de estado de E/S en el número de bytes escritos en el búfer antes de volver al controlador de clase del modificador.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado mcd.h (incluye Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL

Consulte también

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO