IRP_MJ_SET_VOLUME_INFORMATION (FS- und Filtertreiber)

Sendebedingungen

Der E/A-Manager sendet die IRP_MJ_SET_VOLUME_INFORMATION Anforderung. Sie kann beispielsweise gesendet werden, wenn eine Anwendung im Benutzermodus eine Win32-Funktion wie SetVolumeLabel aufgerufen hat.

Vorgang: Dateisystemtreiber

Der Dateisystemtreiber sollte das Dateiobjekt extrahieren und decodieren, um zu bestimmen, ob es ein geöffnetes Benutzervolume darstellt. Wenn dies der Fall ist, sollte der Dateisystemtreiber die entsprechenden Volumeinformationen festlegen und die IRP abschließen. Andernfalls sollte das Dateisystem den IRP nach Bedarf abschließen, ohne die Volumeinformationen festzulegen.

Die Typen von Volumeinformationen, die festgelegt werden können, sind dateisystemabhängig, enthalten jedoch im Allgemeinen einen oder mehrere der folgenden Werte:

  • FileFsControlInformation
  • FileFsLabelInformation
  • FileFsObjectIdInformation

Eine Liste aller möglichen Informationstypen finden Sie in der FS_INFORMATION_CLASS-Enumeration in ntifs.h.

Vorgang: Legacy-Dateisystemfiltertreiber

Der Filtertreiber sollte diesen IRP an den nächstniedrigen Treiber im Stapel übergeben.

Parameter

Ein Dateisystem oder Filtertreiber ruft IoGetCurrentIrpStackLocation für den angegebenen IRP auf, um einen Zeiger auf den eigenen Stapelspeicherort im IRP zu erhalten. In den folgenden Parametern verweist Irp auf den IRP und IrpSp auf die IO_STACK_LOCATION. Der Treiber kann die informationen, die in den folgenden Membern des IRP und des IRP-Stapelspeicherorts festgelegt sind, verwenden, um eine Anforderung für festgelegte Volumeinformationen zu verarbeiten:

  • DeviceObject ist ein Zeiger auf das Zielgerätobjekt.

  • Irp->AssociatedIrp.SystemBuffer verweist auf einen Eingabepuffer, der die Werte der festzulegenden Volumeinformationen enthält. Diese Informationen werden in einer der folgenden Strukturen gespeichert:

    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_LABEL_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
  • Irp->IoStatus verweist auf eine IO_STATUS_BLOCK-Struktur, die den endgültigen Abschluss status und Informationen zum angeforderten Vorgang empfängt.

  • IrpSp->FileObject verweist auf das Dateiobjekt, das DeviceObject zugeordnet ist.

    Der Parameter IrpSp-FileObject> enthält einen Zeiger auf das RelatedFileObject-Feld, das auch eine FILE_OBJECT-Struktur ist. Das Feld RelatedFileObject der FILE_OBJECT-Struktur ist während der Verarbeitung von IRP_MJ_SET_VOLUME_INFORMATION ungültig und sollte nicht verwendet werden.

  • IrpSp->MajorFunction ist auf IRP_MJ_SET_VOLUME_INFORMATION festgelegt.

  • IrpSp->Parameters.SetVolume.FsInformationClass ist der Typ der Informationen, die für das Volume festgelegt werden sollen, und kann eine der folgenden Sein:

    Wert Bedeutung
    FileFsControlInformation Legen Sie FILE_FS_CONTROL_INFORMATION für das Volume fest.
    FileFsLabelInformation Legen Sie FILE_FS_LABEL_INFORMATION für das Volume fest.
    FileFsObjectIdInformation Legen Sie FILE_FS_OBJECTID_INFORMATION für das Volume fest.
  • IrpSp->Parameters.SetVolume.Length ist die Länge des Puffers in Bytes, auf den Irp-AssociatedIrp.SystemBuffer> verweist.

Weitere Informationen

FILE_FS_CONTROL_INFORMATION

FILE_FS_LABEL_INFORMATION

FILE_FS_OBJECTID_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile