Freigeben über


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

Siehe auch

, IOCTL_CHANGER_SET_POSITION

CHANGER_ELEMENT

CHANGER_SET_POSITION