Condividi tramite


Funzione ChangerQueryVolumeTags (mcd.h)

ChangerQueryVolumeTags gestisce gli aspetti specifici del dispositivo di un'IRP di controllo del dispositivo con il codice IOCTL di IOCTL_CHANGER_QUERY_VOLUME_TAGS.

Sintassi

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

Parametri

[in] DeviceObject

Puntatore all'oggetto dispositivo che rappresenta il changer.

[in] Irp

Puntatore all'IRP.

Valore restituito

Se il changer supporta il recupero delle informazioni sul tag del volume, ChangerQueryVolumeTags restituisce il valore STATUS_ XXX restituito dal driver della porta di sistema o uno dei valori seguenti:

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INSUFFICIENT_RESOURCES

Se il changer non supporta il recupero delle informazioni sul tag del volume, ChangerQueryVolumeTags restituisce STATUS_INVALID_DEVICE_REQUEST.

Commenti

Questa routine combina la funzionalità di due comandi SCSI: SEND VOLUME TAGS e REQUEST VOLUME ELEMENT ADDRESS. Questa routine è necessaria.

ChangerQueryVolumeTags recupera le informazioni sul tag del volume per gli elementi specificati. Può essere usato anche per definire o cancellare le informazioni sul tag del volume se il changer supporta queste operazioni. Il flag CHANGER_VOLUME_IDENTIFICATION nel membro Features0della struttura GET_CHANGER_PARAMETERS indica se il changer supporta questa funzionalità.

Il driver di classe changer controlla le lunghezze del buffer di input e output nel percorso dello stack I/O prima di chiamare ChangerQueryVolumeTags. Irp-SystemBuffer> punta a una struttura CHANGER_SEND_VOLUME_TAG_INFORMATION che indica gli elementi, l'operazione da eseguire e un modello che specifica l'ID volume da cercare o impostare.

ChangerQueryVolumeTags controlla prima il codice azione per le operazioni non supportate e restituisce STATUS_INVALID_DEVICE_REQUEST per quelli che non supporta. Successivamente, compila una SRB con un CDB per indicare l'indirizzo specifico del dispositivo dell'elemento iniziale e lo invia al driver di porta di sistema, passando il modello ID volume come parametro. Per un changer SCSI, il driver miniclass usa il comando SCSI SEND VOLUME TAG.

Se il primo SRB ha esito positivo, ChangerQueryVolumeTags compila un secondo SRB con un cdB per trasferire i risultati della SRB precedente. Per un changer SCSI, il driver miniclass usa il comando SCSI REQUEST VOLUME ELEMENT ADDRESS.

ChangerQueryVolumeTags compila quindi una struttura READ_ELEMENT_ADDRESS_INFO in Irp-AssociatedIrp.SystemBuffer> che indica il numero di elementi per i quali sono state trasferite le informazioni sul tag del volume e le informazioni per ogni elemento.

Dopo aver compilato il buffer di sistema, ChangerQueryVolumeTags imposta il campo Informazioni nel blocco di stato I/O sul numero di byte scritti nel buffer prima di tornare al driver della classe changer.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione mcd.h (include Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL

Vedi anche

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO