IOCTL_CDROM_EXCLUSIVE_ACCESS IOCTL (ntddcdrm.h)
Die IOCTL_CDROM_EXCLUSIVE_ACCESS-Anforderung weist den CD-ROM-Klassentreiber an:
- Melden Sie den Zugriffsstatus eines CD-ROM-Geräts.
- Sperren Sie ein CD-ROM-Gerät für den exklusiven Zugriff.
- Entsperren Sie ein CD-ROM-Gerät für den exklusiven Zugriff.
Hauptcode
Eingabepuffer
Abhängig von dem Vorgang, den der Aufrufer anfordert, muss der Aufrufer eine der folgenden Strukturen als Eingabe unter Irp-AssociatedIrp.SystemBuffer> bereitstellen:
-
CDROM_EXCLUSIVE_ACCESS (um den Zugriffsstatus eines CD-ROM-Geräts zu melden)
-
CDROM_EXCLUSIVE_LOCK (um ein CD-ROM-Gerät für exklusiven Zugriff zu sperren)
-
CDROM_EXCLUSIVE_ACCESS (zum Entsperren eines CD-ROM-Geräts, das die Anwendung für den exklusiven Zugriff gesperrt hat)
Länge des Eingabepuffers
Das Parameters.DeviceIoControl.InputBufferLength-Element in der IO_STACK_LOCATION-Struktur gibt die Größe des vom Benutzer zugewiesenen Eingabepuffers in Bytes an.
Ausgabepuffer
Wenn der Aufrufer den exklusiven Zugriffsstatus des CD-ROM-Geräts anfordert (RequestType = ExclusiveAccessQueryState), gibt der CD-ROM-Klassentreiber eine CDROM_EXCLUSIVE_LOCK_STATE-Typstruktur im Puffer bei Irp-AssociatedIrp.SystemBuffer zurück, dessen LockState-Member>den Zugriffsstatus des Geräts angibt.
Länge des Ausgabepuffers
Der Parameter.DeviceIoControl.OutputBufferLength-Member am E/A-Stapelspeicherort (IO_STACK_LOCATION) gibt die Größe des Ausgabepuffers in Bytes an.
Statusblock
Das Feld Information ist auf die Anzahl der zurückgegebenen Bytes festgelegt. Das Feld Status ist auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist.
Wenn die Anforderung fehlschlägt, wird das Feld Status möglicherweise auf eine der folgenden Fehlermeldungen festgelegt:
STATUS_ACCESS_DENIED (Windows-Fehlercode: ERROR_ACCESS_DENIED)
Das Gerät ist bereits für den exklusiven Zugriff gesperrt.
STATUS_BUFFER_TOO_SMALL (Windows-Fehlercode: ERROR_INSUFFICIENT_BUFFER)
Der Ausgabepuffer war für eine ExclusiveAccessQueryState-Anforderung zu klein.
STATUS_INFO_LENGTH_MISMATCH (Windows-Fehlercode: ERROR_BAD_LENGTH)
Der Eingabepuffer war zu klein.
STATUS_INVALID_DEVICE_REQUEST (Windows-Fehlercode: ERROR_INVALID_FUNCTION)
Der CD-ROM-Klassentreiber gibt diesen status Code zurück, wenn einer der folgenden beiden Fehler auftritt:
- Der Aufrufer hat die Anforderung auf einer anderen IRQL-Ebene als PASSIVE_LEVEL ausgeführt.
- Der Aufrufer hat eine Anforderung mit RequestType = ExclusiveAccessUnlockDevice gesendet, um ein Gerät zu entsperren, das sich nicht im exklusiven Modus befindet.
STATUS_INVALID_DEVICE_STATE (Windows-Fehlercode: ERROR_BAD_COMMAND)
Der Aufrufer versuchte, ein Gerät zu sperren, während der Dateisystemtreiber auf diesem Gerät eingebunden wurde, ohne anzugeben, dass der Klassentreiber die Überprüfung auf einen eingebundenen Dateisystemtreiber anhalten soll. Um die Überprüfung für einen eingebundenen Dateisystemtreiber anzusetzen, muss der Aufrufer das Flags-Element von CDROM_EXCLUSIVE_ACCESS auf 1 festlegen.
STATUS_INVALID_HANDLE (Windows-Fehlercode: ERROR_INVALID_HANDLE)
Der CD-ROM-Klassentreiber gibt diesen status Code zurück, wenn einer der folgenden beiden Fehler auftritt:
- Das Dateiobjekt, das zum Nachverfolgen der Anforderung erforderlich ist, war nicht verfügbar. Der CD-ROM-Klassentreiber hat keine Anforderung zum Erstellen eines Dateiobjekts von diesem Aufrufer empfangen.
- Der Aufrufer hat eine Anforderung mit RequestType = ExclusiveAccessUnlockDevice gesendet, um ein Gerät zu entsperren, obwohl der Aufrufer keinen exklusiven Zugriff auf das Gerät hat.
STATUS_INVALID_PARAMETER (Windows-Fehlercode: ERROR_INVALID_PARAMETER)
Der CD-ROM-Klassentreiber gibt diesen status Code zurück, wenn einer der folgenden beiden Fehler auftritt:
- Der angegebene RequestType ist kein gültiges Element von EXCLUSIVE_ACCESS_REQUEST_TYPE.
- Die Namenszeichenfolge des Aufrufers im CallerName-Member von CDROM_EXCLUSIVE_LOCK verstößt gegen die Namenskonvention. CallerName muss eine NULL-endende Zeichenfolge sein, die die folgenden Zeichen enthält: Alphanumerik (A - Z, a - z, 0 - 9), Leerzeichen, Punkte, Kommas, Doppelpunkte (:), Semikolons (;), Bindestriche (-) und Unterstriche (_). Die Länge der Zeichenfolge muss kleiner als CDROM_EXCLUSIVE_CALLER_LENGTH Bytes sein, einschließlich null am Ende der Zeichenfolge.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddcdrm.h (einschließen von Ntddcdrm.h) |