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 |