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 |