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 |