IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)
Sperrt das Gerät, um das Entfernen der Medien zu verhindern. Wenn der Treiber verhindern kann, dass die Medien entfernt werden, während das Laufwerk verwendet wird, deaktiviert oder aktiviert der Treiber den Mechanismus, der Medien ausgibt, und sperrt dadurch das Laufwerk. Ein Aufrufer muss das Gerät mit FILE_READ_ATTRIBUTES öffnen, um diese Anforderung zu senden.
Im Gegensatz zu IOCTL_STORAGE_MEDIA_REMOVAL verfolgt der Fahrer IOCTL_STORAGE_EJECTION_CONTROL Anforderungen des Anrufers und ignoriert Entsperrungsanforderungen, für die er keine Sperranforderung vom gleichen Anrufer erhalten hat, wodurch andere Anrufer daran gehindert werden, das Laufwerk zu entsperren.
Ein Treiber für ein Wechselmediengerät kann diese IOCTL unterstützen, muss folgendes tun:
- Behalten Sie in der Geräteobjekterweiterung eine Sperranzahl bei, die vom Aufrufer markiert wird.
- Behalten Sie die Sperranzahl pro physischem Gerät bei.
- Wenn bei Aufruf mit dieser IOCTL das Flag zum Verhindern des Entfernens der Medien festgelegt ist, erhöhen Sie die Anzahl; Wenn das Flag eindeutig ist und der Treiber zuvor eine Sperranforderung vom gleichen Aufrufer empfangen hat, verringern Sie die Anzahl.
- Verhindern Sie das Entfernen der Medien, es sei denn, alle Sperranzahlen sind null.
Um sicherzustellen, dass Sperren für die Medienentfernung ordnungsgemäß aufgehoben werden, verfolgt der Klassentreiber anrufer, die die Medien mit IOCTL_STORAGE_EJECTION_CONTROL sperren. Wenn der Aufrufer beendet wird, ohne das Gerät zu entsperren, entsperrt der Klassentreiber das Gerät.
Hauptcode
Eingabepuffer
Der Puffer bei Irp-AssociatedIrp.SystemBuffer> enthält einen booleschen Wert, wobei TRUE angibt, dass der Treiber die Medien auf dem Laufwerk sperren soll.
Länge des Eingabepuffers
Die Länge eines booleschen Werts.
Ausgabepuffer
Keine.
Länge des Ausgabepuffers
Keine.
Statusblock
Das Feld Information ist auf 0 (null) festgelegt. Das Feld Status ist auf STATUS_SUCCESS oder möglicherweise auf STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE oder STATUS_DEVICE_NOT_CONNECTED festgelegt.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddstor.h (einschließen von Ntddstor.h) |