ChangerSetAccess-Funktion (mcd.h)
ChangerSetAccess behandelt die gerätespezifischen Aspekte eines IRP für die Gerätesteuerung mit dem IOCTL-Code IOCTL_CHANGER_SET_ACCESS.
Syntax
NTSTATUS ChangerSetAccess(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Parameter
[in] DeviceObject
Zeiger auf das Geräteobjekt, das den Changer darstellt.
[in] Irp
Zeiger auf die IRP.
Rückgabewert
Wenn der Changer das Festlegen des Zugriffs unterstützt, gibt ChangerSetAccess den vom Systemporttreiber zurückgegebenen STATUS_XXX-Wert oder einen der folgenden Werte zurück:
STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER
Wenn der Changer das Festlegen des Zugriffs nicht unterstützt, gibt ChangerSetAccess STATUS_INVALID_DEVICE_REQUEST zurück.
Hinweise
Diese Routine ist erforderlich.
ChangerSetAccess sperrt oder entsperrt den IEport, die Tür oder die Tastatur eines Changers und erweitert oder zieht einen IEport zurück.
Der Changer-Klassentreiber überprüft die Länge des Eingabepuffers am E/A-Stapelspeicherort, bevor ChangerSetAccess aufgerufen wird. Irp-SystemBuffer> verweist auf eine CHANGER_SET_ACCESS-Struktur als Eingabeparameter, der das festzulegende Element und den auszuführenden Vorgang angibt.
ChangerSetAccess sucht zuerst nach nicht unterstützten Elementen und Vorgängen und gibt den entsprechenden status Code für diejenigen zurück, die nicht unterstützt werden.
Als Nächstes übersetzt ChangerSetAccess die nullbasierte Elementadresse, die vom System übergeben wird, in die gerätespezifische Elementadresse, die vom Changer benötigt wird.
Schließlich erstellt ChangerSetAccess einen SRB mit einem CDB für den angegebenen Vorgang für das angegebene Element und sendet ihn an den Systemporttreiber. Der zu verwendende Befehl hängt vom Changer ab. Der Exabyte-Miniklassentreiber verwendet beispielsweise den SCSI-Befehl PREVENT ALLOW MEDIUM REMOVAL, um eine Wechseltür zu sperren oder zu entsperren, und MOVE MEDIUM, um einen IEport zu erweitern oder zurückzuziehen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |