struttura FS_FILTER_CALLBACKS (ntifs.h)

La struttura FS_FILTER_CALLBACKS contiene i punti di ingresso delle routine di callback di notifica fornite dal chiamante.

Sintassi

typedef struct _FS_FILTER_CALLBACKS {
  ULONG                          SizeOfFsFilterCallbacks;
  ULONG                          Reserved;
  PFS_FILTER_CALLBACK            PreAcquireForSectionSynchronization;
  PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
  PFS_FILTER_CALLBACK            PreReleaseForSectionSynchronization;
  PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
  PFS_FILTER_CALLBACK            PreAcquireForCcFlush;
  PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
  PFS_FILTER_CALLBACK            PreReleaseForCcFlush;
  PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
  PFS_FILTER_CALLBACK            PreAcquireForModifiedPageWriter;
  PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
  PFS_FILTER_CALLBACK            PreReleaseForModifiedPageWriter;
  PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
  PFS_FILTER_CALLBACK            PreQueryOpen;
  PFS_FILTER_COMPLETION_CALLBACK PostQueryOpen;
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;

Members

SizeOfFsFilterCallbacks

Dimensioni di questa struttura, in byte. Impostare su sizeof(FS_FILTER_CALLBACKS). SizeOfFsFilterCallbacks non deve essere impostato su zero.

Reserved

Riservato. Non usare.

PreAcquireForSectionSynchronization

Puntatore a un FS_FILTER_CALLBACK routine PreAcquireForSectionSynchronization .

PostAcquireForSectionSynchronization

Puntatore a un FS_FILTER_CALLBACK routine PostAcquireForSectionSynchronization .

PreReleaseForSectionSynchronization

Puntatore a una routine di FS_FILTER_CALLBACK PreReleaseForSectionSynchronization .

PostReleaseForSectionSynchronization

Puntatore a una routine di FS_FILTER_CALLBACK PostReleaseForSectionSynchronization .

PreAcquireForCcFlush

Puntatore a una routine FS_FILTER_CALLBACK PreAcquireForCcFlush .

PostAcquireForCcFlush

Puntatore a una routine FS_FILTER_CALLBACK PostAcquireForCcFlush .

PreReleaseForCcFlush

Puntatore a una routine FS_FILTER_CALLBACK PreReleaseForCcFlush .

PostReleaseForCcFlush

Puntatore a una routine FS_FILTER_CALLBACK PostReleaseForCcFlush .

PreAcquireForModifiedPageWriter

Puntatore a una routine FS_FILTER_CALLBACK PreAcquireForModifiedPageWriter .

PostAcquireForModifiedPageWriter

Puntatore a una routine FS_FILTER_CALLBACK PostAcquireForModifiedPageWriter .

PreReleaseForModifiedPageWriter

Puntatore a una routine FS_FILTER_CALLBACK PreReleaseForModifiedPageWriter .

PostReleaseForModifiedPageWriter

Puntatore a una routine FS_FILTER_CALLBACK PostReleaseForModifiedPageWriter .

PreQueryOpen

Puntatore a una routine FS_FILTER_CALLBACK PreQueryOpen .

PostQueryOpen

Puntatore a una routine FS_FILTER_CALLBACK PostQueryOpen .

Commenti

I driver di filtro del file system e i file system chiamano la routine FsRtlRegisterFileSystemFilterCallbacks per registrare routine di callback di notifica da richiamare quando il file system sottostante esegue determinate operazioni.

Tutti i punti di ingresso del callback sono facoltativi e possono essere NULL.

La routine di callback del filtro FS_FILTER_CALLBACK e i relativi parametri sono definiti come segue:


typedef
NTSTATUS (*PFS_FILTER_CALLBACK) (
    IN PFS_FILTER_CALLBACK_DATA Data,
    OUT PVOID *CompletionContext
);

Parametro Significato
Dati Puntatore alla struttura FS_FILTER_CALLBACK_DATA per questa operazione.
CompletionContext Informazioni sul contesto da passare alla routine di callback di completamento del filtro. Impostare su NULL se non devono essere passate informazioni di contesto o se non è presente alcuna routine di callback di completamento del filtro corrispondente.

La routine di callback di completamento del filtro FS_FILTER_COMPLETION_CALLBACK e i relativi parametri sono definiti come segue:


typedef
VOID (*PFS_FILTER_COMPLETION_CALLBACK) (
    IN PFS_FILTER_CALLBACK_DATA Data,
    IN NTSTATUS OperationStatus,
    IN PVOID CompletionContext
);

Parametro Significato
Dati Puntatore alla struttura FS_FILTER_CALLBACK_DATA per questa operazione.
OperationStatus Stato dell'operazione. Se il file system ha eseguito correttamente l'operazione, questo parametro viene impostato su STATUS_SUCCESS. In caso contrario, viene impostato su un valore di stato di errore appropriato.
CompletionContext Informazioni di contesto impostate nella routine di callback del filtro. Questa proprietà è impostata su NULL se non vengono passate informazioni o se non è presente alcuna routine di callback del filtro corrispondente.

Le routine di callback sono definite per le operazioni seguenti:

Operazione Routine di callback delle notifiche
Gestione memoria acquisisce un file esclusivamente prima di creare una sezione mappata alla memoria per una parte del file. Per questa operazione, SyncType è impostato su SyncTypeCreateSection. PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization
Gestione memoria rilascia un file dopo aver creato una sezione mappata alla memoria per una parte del file. PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization
Un componente del kernel, ad esempio gestione cache, acquisisce un file esclusivamente prima di disabilitare temporaneamente la creazione della sezione per una parte del file. Per questa operazione, SyncType è impostato su SyncTypeOther. PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization. PreAcquireForSectionSynchronization deve sempre restituire un codice di stato di esito positivo (ad esempio STATUS_SUCCESS) per questa operazione.
Un componente del kernel, ad esempio gestione cache, rilascia un file dopo la disabilitazione temporanea della creazione della sezione per una parte del file. PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization
La gestione cache acquisisce un file esclusivamente prima di scaricare una parte del file dalla cache. PreAcquireForCcFlush, PostAcquireForCcFlush
Gestione cache rilascia un file dopo aver scaricato una parte del file dalla cache. PreReleaseForCcFlush, PostReleaseForCcFlush
Il writer di pagine modificato acquisisce un file esclusivamente prima di scrivere una parte del file su disco. PreAcquireForModifiedPageWriter, PostAcquireForModifiedPageWriter
Il writer di pagine modificato rilascia un file dopo la scrittura di una parte del file su disco. PreReleaseForModifiedPageWriter, PostReleaseForModifiedPageWriter
Un componente esegue una query per informazioni sui file in base al nome senza aprire il file. I redirector non verranno mai chiamati con questa query e pertanto non è necessario implementare i callback PreQueryOpen o PostQueryOpen. PreQueryOpen, PostQueryOpen

La routine di callback delle notifiche di filtro viene richiamata prima che la richiesta di operazione venga passata ai driver di filtro di livello inferiore e al file system sottostante. Nella routine di callback, il driver di filtro deve eseguire qualsiasi elaborazione necessaria e restituire immediatamente STATUS_SUCCESS. Se la routine di callback di un driver di filtro restituisce un valore di stato diverso da STATUS_SUCCESS, la richiesta di operazione avrà esito negativo. Un errore ripetuto di determinate richieste, ad esempio le richieste di blocco, può interrompere l'avanzamento del sistema. Pertanto, i driver di filtro devono avere esito negativo in tale richiesta solo quando è assolutamente necessario. In caso di errore di queste richieste, il driver di filtro deve restituire un valore di stato di errore che descrive l'errore nel modo più completo e accurato possibile.

Nota

La routine di callback di notifica di un driver di filtro non può non riuscire a rilasciare una risorsa del file system. Se un driver di filtro restituisce un valore di stato diverso da STATUS_SUCCESS da una delle routine di callback di notifica seguenti, il valore di stato viene ignorato.

  • PreReleaseForSectionSynchronization
  • PreReleaseForCcFlush
  • PreReleaseForModifiedPageWriter

La routine di callback di completamento del filtro viene richiamata dopo il passaggio della richiesta di operazione ai driver di filtro di livello inferiore e al file system sottostante. Nella routine di callback di completamento, il driver di filtro deve eseguire qualsiasi elaborazione necessaria e restituire immediatamente.

Requisiti

Requisito Valore
Intestazione ntifs.h

Vedi anche

FS_FILTER_CALLBACK_DATA

FsRtlRegisterFileSystemFilterCallbacks