Freigeben über


IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)

Sperrt das Gerät, um das Entfernen des Mediums 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 auswirft, wodurch das Laufwerk gesperrt wird. Ein Anrufer muss das Gerät mit FILE_READ_ATTRIBUTES öffnen, um diese Anforderung zu senden.

Im Gegensatz zu IOCTL_STORAGE_MEDIA_REMOVALverfolgt der Treiber IOCTL_STORAGE_EJECTION_CONTROL Anforderungen nach Anrufer und ignoriert entsperrte Anforderungen, für die er keine Sperranforderung vomselben Anrufer erhalten hat, wodurch verhindert wird, dass andere Anrufer das Laufwerk entsperren.

Ein Treiber für ein Wechselmediengerät – kann dieses IOCTL unterstützen, muss folgendes tun:

  1. Behalten Sie die Sperranzahl bei, die durch den Aufrufer gekennzeichnet ist, in der Geräteobjekterweiterung.
  2. Behalten Sie die Sperranzahl pro physischem Gerät bei.
  3. Wenn sie mit diesem IOCTL aufgerufen wird, wenn die Kennzeichnung zum Verhindern der Entfernung des Mediums festgelegt ist, erhöhen Sie die Anzahl; wenn das Kennzeichen klar ist und der Treiber zuvor eine Sperranforderung vomselben Anrufer erhalten hat, erhöhen Sie die Anzahl.
  4. Verhindern Sie das Entfernen des Mediums, es sei denn, alle Sperranzahlen sind Null.
Unter normalen Umständen entsperrt der Anrufer, der das Gerät mit IOCTL_STORAGE_EJECTION_CONTROL gesperrt hat, das Gerät, indem es IOCTL_STORAGE_EJECTION_CONTROL erneut mit Irp->AssociatedIrp.SystemBuffer auf einen booleschen Wert von FALSEfestgelegt. Manchmal kann der Anrufer das Gerät jedoch nicht ordnungsgemäß entsperren.

Um sicherzustellen, dass Medienentfernungssperren ordnungsgemäß freigegeben werden, verfolgt der Klassentreiber Anrufer, die die Medien mit IOCTL_STORAGE_EJECTION_CONTROL sperren. Wenn der Anrufer beendet wird, ohne das Gerät zu entsperren, entsperrt der Klassentreiber das Gerät.

Hauptcode

IRP_MJ_DEVICE_CONTROL

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.

Eingabepufferlänge

Die Länge eines Werts vom Typ Boolean.

Ausgabepuffer

Nichts.

Länge des Ausgabepuffers

Nichts.

Statusblock

Das Feld Information wird auf Null festgelegt. Das Feld Status wird 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 (include Ntddstor.h)

Siehe auch

IOCTL_STORAGE_EJECT_MEDIA