ChangerSetPosition-Funktion (mcd.h)
ChangerSetPosition behandelt die gerätespezifischen Aspekte eines Gerätesteuerungs-IRP mit dem IOCTL-Code IOCTL_CHANGER_SET_POSITION.
Syntax
NTSTATUS ChangerSetPosition(
[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 Festlegen der Position des Transportelements unterstützt, gibt ChangerSetPosition den vom Systemporttreiber zurückgegebenen Status oder einen der folgenden Werte zurück:
STATUS_SUCCESS
STATUS_INFO_LENGTH_MISMATCH
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Wenn der Changer das Festlegen der Position des Transportelements nicht unterstützt, gibt ChangerSetPosition STATUS_INVALID_DEVICE_REQUEST zurück.
Bemerkungen
Diese Routine ist erforderlich.
ChangerSetPosition legt den Robotertransportmechanismus des Changers auf das angegebene Ziel fest, in der Regel, um das Verschieben oder Austauschen von Medien zu optimieren, indem zuerst der Transport positioniert wird.
Das CHANGER_POSITION_TO_ELEMENT Flag in Features0 von GET_CHANGER_PARAMETERS gibt an, ob der Changer diese Funktionalität unterstützt.
Der Änderungsklassentreiber überprüft die Eingabepufferlänge am E/A-Stapelspeicherort, bevor ChangerSetPosition-aufgerufen wird. Irp–>SystemBuffer- verweist auf eine CHANGER_SET_POSITION Struktur als Eingabeparameter, der das Transportelement und das festzulegende Ziel angibt.
ChangerSetPosition- überprüft zuerst, ob die Transport- und Zielelementadressen gültig sind und nullbasierte Elementadressen in gerätespezifische Adressen konvertiert werden. Anschließend wird ein SRB mit einem CDB erstellt, um das Element zu positionieren und an den Systemporttreiber zu senden.
ChangerSetPosition legt das Feld Information im E/A-Statusblock auf Größe(CHANGER_SET_POSITION) fest, bevor sie zum Änderungsklassentreiber zurückkehren.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL- | PASSIVE_LEVEL |