Freigeben über


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

Siehe auch

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus-

READ_ELEMENT_ADDRESS_INFO