Freigeben über


ChangerSetPosition-Funktion (mcd.h)

ChangerSetPosition verarbeitet 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 den IRP.

Rückgabewert

Wenn der Changer das Festlegen der Position des Transportelements unterstützt, gibt ChangerSetPosition die vom Systemporttreiber zurückgegebene 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.

Hinweise

Diese Routine ist erforderlich.

ChangerSetPosition legt den Robotertransportmechanismus des Changers auf das angegebene Ziel fest, in der Regel, um das Bewegen oder Austauschen von Medien zu optimieren, indem zuerst der Transport positioniert wird.

Das flag CHANGER_POSITION_TO_ELEMENT in Features0 of GET_CHANGER_PARAMETERS gibt an, ob der Wechslungsgeber diese Funktionalität unterstützt.

Der Changer-Klassentreiber überprüft die Länge des Eingabepuffers im 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 zunächst, ob die Transport- und Zielelementadressen gültig sind, und konvertiert nullbasierte Elementadressen in gerätespezifische Adressen. Anschließend wird ein SRB mit einer CDB erstellt, um das Element zu positionieren, und sendet es an den Systemporttreiber.

ChangerSetPosition legt das Feld Information im E/A-status-Block auf sizeof(CHANGER_SET_POSITION) fest, bevor es zum Changerklassentreiber zurückkehrt.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile mcd.h (include Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

, IOCTL_CHANGER_SET_POSITION

CHANGER_ELEMENT

CHANGER_SET_POSITION