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;
Membri
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 una routine FS_FILTER_CALLBACK PreAcquireForSectionSynchronization.
PostAcquireForSectionSynchronization
Puntatore a una routine FS_FILTER_CALLBACK PostAcquireForSectionSynchronization.
PreReleaseForSectionSynchronization
Puntatore a una routine FS_FILTER_CALLBACK PreReleaseForSectionSynchronization.
PostReleaseForSectionSynchronization
Puntatore a una routine postReleaseForSectionSynchronization FS_FILTER_CALLBACK.
PreAcquireForCcFlush
Puntatore a una routine di FS_FILTER_CALLBACK PreAcquireForCcFlush.
PostAcquireForCcFlush
Puntatore a una routine FS_FILTER_CALLBACK PostAcquireForCcFlush.
PreReleaseForCcFlush
Puntatore a una routine di FS_FILTER_CALLBACK PreReleaseForCcFlush.
PostReleaseForCcFlush
Puntatore a una routine di FS_FILTER_CALLBACK PostReleaseForCcFlush.
PreAcquireForModifiedPageWriter
Puntatore a una routine FS_FILTER_CALLBACK PreAcquireForModifiedPageWriter.
PostAcquireForModifiedPageWriter
Puntatore a una routine di FS_FILTER_CALLBACK PostAcquireForModifiedPageWriter.
PreReleaseForModifiedPageWriter
Puntatore a una routine FS_FILTER_CALLBACK PreReleaseForModifiedPageWriter.
PostReleaseForModifiedPageWriter
Puntatore a una routine PostReleaseForModifiedPageWriter FS_FILTER_CALLBACK.
PreQueryOpen
Puntatore a una routine FS_FILTER_CALLBACK PreQueryOpen.
PostQueryOpen
Puntatore a una routine di FS_FILTER_CALLBACK PostQueryOpen.
Osservazioni
I driver di filtro del file system e i file system chiamano il FsRtlRegisterFileSystemFilterCallbacks routine 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 |
---|---|
Data | 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 |
---|---|
Data | 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, è impostato su un valore di stato di errore appropriato. |
CompletionContext | Informazioni sul 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 kernel ,ad esempio gestione cache, acquisisce un file esclusivamente prima di disabilitare temporaneamente la creazione di sezioni per una parte del file. Per questa operazione, SyncType è impostato su SyncTypeOther. | PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization. PreAcquireForSectionSynchronization deve restituire sempre un codice di stato di esito positivo (ad esempio STATUS_SUCCESS) per questa operazione. |
Un componente kernel,ad esempio gestione cache, rilascia un file dopo la disabilitazione temporanea della creazione di sezioni per una parte del file. | PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization |
Gestione cache acquisisce un file esclusivamente prima di scaricare una parte del file dalla cache. | PreAcquireForCcFlush, PostAcquireForCcFlush |
Gestione cache rilascia un file dopo lo scaricamento di 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, in questo modo la richiesta di operazione non riesce. Un errore ripetuto di determinate richieste, ad esempio richieste di blocco, può interrompere lo stato di avanzamento del sistema. Pertanto, i driver di filtro devono avere esito negativo 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 che la richiesta dell'operazione viene passata 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.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | ntifs.h |