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 modificatore.

[in] Irp

Puntatore all'IRP.

Valore restituito

Se il modificatore supporta il recupero delle informazioni sui 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 modificatore non supporta il recupero delle informazioni sui tag del volume, ChangerQueryVolumeTags restituisce STATUS_INVALID_DEVICE_REQUEST.

Osservazioni

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

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

Il driver della classe changer controlla le lunghezze del buffer di input e output nel percorso dello stack di 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 prima controlla il codice azione per le operazioni non supportate e restituisce STATUS_INVALID_DEVICE_REQUEST per quelli non supportati. Successivamente, compila un SRB con un CDB per indicare l'indirizzo specifico del dispositivo dell'elemento iniziale e lo invia al driver della porta di sistema, passando il modello di ID volume come parametro. Per un modificatore SCSI, il driver miniclasse 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 dell'SRB precedente. Per un modificatore SCSI, il driver miniclasse usa il comando SCSI REQUEST VOLUME ELEMENT ADDRESS.)

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

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

Fabbisogno

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

Vedere anche

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO