ChangerQueryVolumeTags-Funktion (mcd.h)
ChangerQueryVolumeTags verarbeitet 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 den IRP.
Rückgabewert
Wenn der Changer das Abrufen von Volumetaginformationen unterstützt, gibt ChangerQueryVolumeTags den vom Systemporttreiber zurückgegebenen STATUS_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.
Hinweise
Diese Routine kombiniert die Funktionalität von zwei SCSI-Befehlen: SEND VOLUME TAGS und REQUEST VOLUME ELEMENT ADDRESS. Diese Routine ist erforderlich.
ChangerQueryVolumeTags ruft Volumetaginformationen für angegebene Elemente ab. Es 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 Feature0-Element der GET_CHANGER_PARAMETERS-Struktur gibt an, ob der Changer diese Funktionalität unterstützt.
Der Changer-Klassentreiber überprüft die Längen des Eingabe- und Ausgabepuffers im E/A-Stapelspeicherort, bevor ChangerQueryVolumeTags aufgerufen 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 nicht unterstützte Vorgänge zurück. Als Nächstes wird ein SRB mit einem CDB erstellt, um die gerätespezifische Adresse des Startelements anzugeben, und sendet sie an den Systemporttreiber, wobei die Volume-ID-Vorlage als Parameter übergeben wird. (Für einen 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. (Für einen SCSI-Changer verwendet der Miniklassentreiber den SCSI-Befehl REQUEST VOLUME ELEMENT ADDRESS.)
ChangerQueryVolumeTags füllt dann eine READ_ELEMENT_ADDRESS_INFO-Struktur unter Irp-AssociatedIrp.SystemBuffer> aus, 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-status-Block auf die Anzahl der in den Puffer geschriebenen Bytes fest, bevor sie zum Changerklassentreiber zurückkehren.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |