ChangerQueryVolumeTags-Funktion (mcd.h)
ChangerQueryVolumeTags behandelt die gerätespezifischen Aspekte eines Gerätesteuerungs-IRP mit dem IOCTL-Code von IOCTL_CHANGER_QUERY_VOLUME_TAGS.
Syntax
NTSTATUS ChangerQueryVolumeTags(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Parameter
[in] DeviceObject
Zeiger auf das Geräteobjekt, das den Changer darstellt.
[in] Irp
Zeiger auf das IRP.
Rückgabewert
Wenn der Changer das Abrufen von Volumetaginformationen unterstützt, gibt ChangerQueryVolumeTags- den STATUS_vom Systemporttreiber zurückgegebenen XXX--Wert oder einen der folgenden Werte zurück:
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INSUFFICIENT_RESOURCES
Wenn der Changer das Abrufen von Volumetaginformationen nicht unterstützt, gibt ChangerQueryVolumeTags STATUS_INVALID_DEVICE_REQUEST zurück.
Bemerkungen
Diese Routine kombiniert die Funktionalität von zwei SCSI-Befehlen: SEND VOLUME TAGS und REQUEST VOLUME ELEMENT ADDRESS. Diese Routine ist erforderlich.
ChangerQueryVolumeTags Volumetaginformationen für angegebene Elemente abruft. Sie kann auch verwendet werden, um Volumetaginformationen zu definieren oder zu löschen, wenn der Changer diese Vorgänge unterstützt. Das CHANGER_VOLUME_IDENTIFICATION Flag im Features0 Member der GET_CHANGER_PARAMETERS Struktur gibt an, ob der Changer diese Funktionalität unterstützt.
Der Änderungsklassentreiber überprüft die Länge des Eingabe- und Ausgabepuffers am E/A-Stapelspeicherort, bevor ChangerQueryVolumeTagsaufgerufen wird. Irp->SystemBuffer verweist auf eine CHANGER_SEND_VOLUME_TAG_INFORMATION Struktur, die die elemente, den auszuführenden Vorgang und eine Vorlage angibt, die die volume-ID angibt, nach der gesucht oder festgelegt werden soll.
ChangerQueryVolumeTags überprüft zuerst den Aktionscode auf nicht unterstützte Vorgänge und gibt STATUS_INVALID_DEVICE_REQUEST für diese zurück, die nicht unterstützt werden. Als Nächstes erstellt es einen SRB mit einem CDB, um die gerätespezifische Adresse des Startelements anzugeben und an den Systemporttreiber zu senden und die Volume-ID-Vorlage als Parameter zu übergeben. (Bei einem SCSI-Changer verwendet der Miniklassentreiber den SCSI-Befehl SEND VOLUME TAG.)
Wenn der erste SRB erfolgreich ist, erstellt ChangerQueryVolumeTags einen zweiten SRB mit einem CDB, um die Ergebnisse des vorherigen SRB zu übertragen. (Bei einem SCSI-Changer verwendet der Miniklassentreiber die SCSI-BefehlsANFORDERUNG VOLUME ELEMENT ADDRESS.)
ChangerQueryVolumeTags füllt dann eine READ_ELEMENT_ADDRESS_INFO Struktur bei Irp->AssociatedIrp.SystemBuffer, die die Anzahl der Elemente angibt, für die Volumetaginformationen übertragen wurden, und die Informationen für jedes Element.
Nach dem Ausfüllen des Systempuffers legt ChangerQueryVolumeTags das feld Information im E/A-Statusblock auf die Anzahl der Bytes fest, die in den Puffer geschrieben wurden, bevor sie an den Änderungsklassentreiber zurückgegeben werden.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL- | PASSIVE_LEVEL |