IRP_MJ_SET_VOLUME_INFORMATION (fs e driver di filtro)

Data di invio

Gestione I/O invia la richiesta di IRP_MJ_SET_VOLUME_INFORMATION. Può essere inviato, ad esempio, quando un'applicazione in modalità utente ha chiamato una funzione Win32, ad esempio SetVolumeLabel.

Operazione: Driver di file system

Il driver del file system deve estrarre e decodificare l'oggetto file per determinare se rappresenta un volume utente aperto. In caso contrario, il driver del file system deve impostare le informazioni sul volume appropriate e completare l'IRP. In caso contrario, il file system deve completare l'IRP in base alle esigenze senza impostare le informazioni sul volume.

I tipi di informazioni sul volume che possono essere impostati sono dipendenti dal file system, ma in genere includono uno o più dei valori seguenti:

  • FileFsControlInformation
  • FileFsLabelInformation
  • FileFsObjectIdInformation

Per un elenco di tutti i tipi di informazioni possibili, vedere l'enumerazione FS_INFORMATION_CLASS in ntifs.h.

Operazione: Driver di filtro del file system legacy

Il driver di filtro deve passare questo IRP fino al driver inferiore successivo nello stack.

Parametri

Un file system o un driver di filtro chiama IoGetCurrentIrpStackLocation per l'IRP specificato per ottenere un puntatore alla propria posizione dello stack in IRP. Nei parametri seguenti, Irp punta a IRP e IrpSp punta al IO_STACK_LOCATION. Il driver può usare le informazioni impostate nei membri seguenti dell'IRP e del percorso dello stack IRP per elaborare una richiesta di informazioni sul volume impostata:

  • DeviceObject è un puntatore all'oggetto dispositivo di destinazione.

  • Irp->AssociateIrp.SystemBuffer punta a un buffer di input contenente i valori delle informazioni sul volume da impostare. Queste informazioni vengono archiviate in una delle strutture seguenti:

    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_LABEL_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
  • Irp->IoStatus punta a una struttura IO_STATUS_BLOCK che riceve lo stato di completamento finale e le informazioni sull'operazione richiesta.

  • IrpSp->FileObject punta all'oggetto file associato a DeviceObject.

    Il parametro IrpSp-FileObject> contiene un puntatore al campo RelatedFileObject, che è anche una struttura FILE_OBJECT. Il campo RelatedFileObject della struttura FILE_OBJECT non è valido durante l'elaborazione di IRP_MJ_SET_VOLUME_INFORMATION e non deve essere usato.

  • IrpSp->MajorFunction è impostato su IRP_MJ_SET_VOLUME_INFORMATION.

  • IrpSp->Parameters.SetVolume.FsInformationClass è il tipo di informazioni da impostare per il volume e può essere uno dei seguenti:

    Valore Significato
    FileFsControlInformation Impostare FILE_FS_CONTROL_INFORMATION per il volume.
    FileFsLabelInformation Impostare FILE_FS_LABEL_INFORMATION per il volume.
    FileFsObjectIdInformation Impostare FILE_FS_OBJECTID_INFORMATION per il volume.
  • IrpSp->Parameters.SetVolume.Length è la lunghezza, in byte, del buffer a cui fa riferimento Irp-AssociatedIrp.SystemBuffer>.

Vedi anche

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