Freigeben über


IOCTL_STORAGE_CHECK_VERIFY IOCTL (ntddstor.h)

Bestimmt, ob sich die Medien auf einem Wechselmediengerät geändert haben, das der Anrufer für Lese- oder Schreibzugriff geöffnet hat. Wenn lese- oder schreibzugriff auf das Gerät nicht erforderlich ist, kann der Aufrufer die Leistung verbessern, indem es das Gerät mit FILE_READ_ATTRIBUTES öffnet und stattdessen eineIOCTL_STORAGE_CHECK_VERIFY2 Anforderung ausgibt.

Weitere Informationen finden Sie unter Unterstützen von Wechselmedien.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Nichts.

Eingabepufferlänge

Nichts.

Ausgabepuffer

CD-ROM Optional verweist Irp->AssociatedIrp.SystemBuffer auf einen Puffer, um die Anzahl der Medienänderungen zu erhalten. Der Treiber füllt diesen Puffer nur, wenn Parameters.DeviceIoControl.OutputBufferLength- ungleich Null war und der Rückgabewert STATUS_SUCCESS ist. Die Anzahl der Medienänderungen ist ein ULONG, der angibt, wie oft sich die Medien seit dem Start des Treibers geändert haben.

Andernfalls hat diese Anforderung keine Ausgabe.

Länge des Ausgabepuffers

Optional gibt für Datenträger und CD-ROM Geräte Parameters.DeviceIoControl.OutputBufferLength im I/O-Stapelspeicherort des IRP die Größe eines Puffers in Bytes an, der >= Größe von(ULONG) sein muss. Dieses Feld ist null, wenn der optionale Puffer nicht angegeben ist.

Andernfalls hat diese Anforderung keine Eingabe.

Statusblock

Wenn ein Datenträger oder CD-ROM Treiber keinen Hinweis darauf hat, dass sich die Medien geändert haben, legt der Treiber das feld Status auf STATUS_SUCCESS fest. Wenn der optionale Medienänderungspuffer angegeben wurde, gibt der Treiber die Anzahl der Medienänderungen im Puffer bei Irp->AssociatedIrp.SystemBuffer zurück und legt das feld Information auf Größe von(ULONG) fest. Wenn der optionale Medienänderungspuffer nicht angegeben wurde, legt der Treiber Information auf Null fest.

Wenn der Treiber erkennt, dass sich das Medium geändert hat und das Volume bereitgestellt wird (VPB_MOUNTED in der VPB festgelegt ist), muss folgendes erfolgen:

  1. Legen Sie Information auf Null fest.
  2. Legen Sie Status- auf STATUS_VERIFY_REQUIRED fest.
  3. Legen Sie das DO_VERIFY_VOLUME Flag im DeviceObject fest.
  4. Rufen Sie IoCompleteRequest mit dem Eingabe-IRP auf.
Wenn der Treiber erkennt, dass sich die Medien geändert haben, aber das Volume nicht bereitgestellt wird, darf der Treiber das DO_VERIFY_VOLUME Bit nicht festlegen. Stattdessen sollte folgendes ausgeführt werden:
  1. Legen Sie Status- auf STATUS_IO_DEVICE_ERROR fest.
  2. Legen Sie Information auf Null fest.
  3. Rufen Sie IoCompleteRequest mit dem IRP auf.
Wenn der Treiber einen Fehler wie STATUS_BUFFER_TOO_SMALL, STATUS_INSUFFICIENT_RESOURCES oder einen Gerätefehler erkennt, wird Information null festgelegt und der entsprechende Fehlerwert im Feld Status festgelegt.

Bei einem Bandtreiber wird das Feld Information auf Null festgelegt, und das feld Status feld wird auf STATUS_SUCCESS oder möglicherweise auf STATUS_VERIFY_REQUIRED festgelegt.

Anforderungen

Anforderung Wert
Header- ntddstor.h (include Ntddstor.h)

Siehe auch

IOCTL_STORAGE_CHECK_VERIFY2