IRP_MJ_FLUSH_BUFFERS (driver FS e filtro)

Data di invio

I/O Manager, altri componenti del sistema operativo e altri driver in modalità kernel inviano richieste IRP_MJ_FLUSH_BUFFERS quando i dati memorizzati nel buffer devono essere scaricati su disco. Può essere inviato, ad esempio, quando un'applicazione in modalità utente ha chiamato una funzione Win32, ad esempio FlushFileBuffers. Per i driver del file system e i driver di filtro del file system, è preferibile chiamare CcFlushCache all'invio di un IRP.

Tutti i driver di file system e filtro che gestiscono buffer interni per i dati devono gestire questo IRP in modo che le modifiche ai dati o ai metadati dei file possano essere mantenute tra arresti di sistema.

Operazione: driver del file system

Il driver del file system deve eseguire lo scaricamento su disco di tutti i dati o i metadati importanti associati all'oggetto file e completare l'IRP. Per altre informazioni su come gestire questo IRP, studiare l'esempio FASTFAT.

Operazione: driver di filtro del file system legacy

Il driver di filtro deve eseguire lo scaricamento su disco di tutti i dati o i metadati importanti associati all'oggetto file e passare questo IRP al driver inferiore successivo nello stack.

Parametri

Un file system o un driver di filtro chiama IoGetCurrentIrpStackLocation con l'IRP specificato per ottenere un puntatore alla propria posizione dello stack nell'IRP, illustrato nell'elenco seguente come IrpSp. L'IRP viene visualizzato come Irp. Il driver può usare le informazioni impostate nei membri seguenti dell'IRP e del percorso dello stack IRP nell'elaborazione di una richiesta di buffer di scaricamento:

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

  • 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_FLUSH_BUFFERS e non deve essere usato.

  • IrpSp->MajorFunction è impostato su IRP_MJ_FLUSH_BUFFERS.

Vedi anche

CcFlushCache

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_FLUSH_BUFFERS (informazioni di riferimento sul kernel WDK)