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 |