IRP_MJ_QUERY_VOLUME_INFORMATION (driver FS e filtro)

Data di invio

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

Operazione: Driver di file system

Il driver del file system deve estrarre e decodificare l'oggetto file per determinare se l'oggetto dispositivo di destinazione è l'oggetto del dispositivo di controllo del file system. Se è, e se la richiesta è stata emessa su un handle aperto (o un'apertura di un oggetto nel volume), il driver del file system deve elaborare la richiesta e completare l'IRP.

In caso contrario, il driver del file system deve non riuscire la query e completare l'IRP.

I tipi di informazioni sul volume che possono essere sottoposte a query sono dipendenti dal file system, ma in genere includono i valori seguenti:

  • FileFsAttributeInformation
  • FileFsDeviceInformation
  • FileFsSizeInformation
  • FileFsVolumeInformation

Per un elenco di tutti i tipi di informazioni possibili, vedere IrpSp-Parameters.QueryVolume.FsInformationClass>.

Operazione: Driver di reindirizzamento di rete

Un reindirizzamento di rete che riceve una richiesta per FileFsDeviceInformation, deve includere FILE_REMOTE_DEVICE come una delle opzioni per il membro DeviceCharacteristicsdella struttura FILE_FS_DEVICE_INFORMATION restituita.

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 di query:

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

  • Irp->AssociateIrp.SystemBuffer punta a un buffer di output fornito dal sistema in cui devono essere restituite le informazioni sul volume. Queste informazioni vengono archiviate in una delle strutture seguenti:

    • FILE_FS_ATTRIBUTE_INFORMATION
    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_DEVICE_INFORMATION
    • FILE_FS_DRIVER_PATH_INFORMATION
    • FILE_FS_FULL_SIZE_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
    • FILE_FS_SIZE_INFORMATION
    • FILE_FS_VOLUME_FLAGS_INFORMATION
    • FILE_FS_VOLUME_INFORMATION
    • FILE_FS_SECTOR_SIZE_INFORMATION

    La classe FileFsVolumeFlagsInformation e la struttura FILE_FS_VOLUME_INFORMATION associata sono disponibili in Windows Vista e versioni successive.

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

  • Irp->UserBuffer è un puntatore facoltativo a un buffer di output fornito dal chiamante in cui il contenuto di Irp-AssociatedIrp.SystemBuffer> viene copiato durante il completamento di I/O dal gestore I/O. I driver non usano questo buffer per restituire dati per la richiesta.

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

    Il parametroIrpSp-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_QUERY_VOLUME_INFORMATION e non deve essere usato.

  • IrpSp->MajorFunction è impostato su IRP_MJ_QUERY_VOLUME_INFORMATION.

  • IrpSp->Parameters.QueryVolume.FsInformationClass è il tipo di informazioni sul volume da restituire dal file system. Questo membro può essere uno dei valori seguenti.

Valore Significato
FileFsAttributeInformation Restituisce una struttura FILE_FS_ATTRIBUTE_INFORMATION che contiene informazioni sull'attributo sul file system responsabile del volume.
FileFsControlInformation Restituisce una struttura FILE_FS_CONTROL_INFORMATION che contiene informazioni sul controllo file system sul volume.
FileFsDeviceInformation Restituisce una struttura FILE_FS_DEVICE_INFORMATION che contiene informazioni sul dispositivo per il volume.
FileFsDriverPathInformation Restituisce una struttura FILE_FS_DRIVER_PATH_INFORMATION che contiene informazioni sul fatto che un driver specificato si trova nel percorso di I/O per il volume. L'origine della richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION deve archiviare il nome del driver nella struttura FILE_FS_DRIVER_PATH_INFORMATION prima di inviare l'IRP allo stack del volume del file system.
FileFsFullSizeInformation Restituisce una struttura FILE_FS_FULL_SIZE_INFORMATION che contiene informazioni sulla quantità totale di spazio disponibile nel volume.
FileFsObjectIdInformation Restituisce una struttura FILE_FS_OBJECTID_INFORMATION che contiene informazioni sull'ID oggetto specifico del file system per il volume. Queste informazioni sull'ID oggetto non corrispondono al nome del volume univoco (basato su GUID) assegnato dal sistema operativo.
FileFsSizeInformation Restituisce una struttura FILE_FS_SIZE_INFORMATION contenente informazioni sulla quantità di spazio nel volume disponibile per l'utente associato al thread che ha generato la richiesta di IRP_MJ_QUERY_VOLUME_INFORMATION .
FileFsVolumeInformation Restituisce un FILE_FS_VOLUME_INFORMATION che contiene informazioni sul volume, ad esempio l'etichetta del volume, il numero di serie e l'ora di creazione.
FileFsSectorSizeInformation Restituisce una struttura FILE_FS_SECTOR_SIZE_INFORMATION che contiene informazioni sulle dimensioni del settore fisico e logico di un volume.
  • IrpSp->Parameters.QueryVolume.Length è la lunghezza, in byte, del buffer a cui fa riferimento Irp-UserBuffer>. In caso di ritorno, questa variabile riceve il numero di byte scritti nel buffer.

Vedi anche

FILE_FS_ATTRIBUTE_INFORMATION

FILE_FS_CONTROL_INFORMATION

FILE_FS_DEVICE_INFORMATION

FILE_FS_DRIVER_PATH_INFORMATION

FILE_FS_FULL_SIZE_INFORMATION

FILE_FS_OBJECTID_INFORMATION

FILE_FS_SECTOR_SIZE_INFORMATION

FILE_FS_SIZE_INFORMATION

FILE_FS_VOLUME_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile