FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)
Gestione filtri usa il codice di controllo FSCTL_SET_PURGE_FAILURE_MODE per sincronizzare le operazioni durante la durata di una sezione creata per l'analisi dei dati. I filtri non devono mai emettere questo codice di controllo.
Codice principale
Buffer di input
Struttura SET_PURGE_FAILURE_MODE_INPUT .
Lunghezza del buffer di input
Dimensioni in byte di SET_PURGE_FAILURE_MODE_INPUT.
Buffer di output
Nessuno
Lunghezza del buffer di output
n/d
Buffer di input/output
Nessuno
Lunghezza del buffer di input/output
n/d
Blocco dello stato
Riservato per l'utilizzo nel sistema.
Commenti
Gestione filtri usa questo codice di controllo con IRP_MJ_FILE_SYSTEM_CONTROL chiamate per tra parentesi la durata della sezione. Queste chiamate servono per indicare a un file system (e, raramente, minifiltri) di comportarsi nel modo seguente se non riesce a ripulire le cache di Gestione cache.
Per ogni FSCTL_SET_PURGE_FAILURE_MODE emesso con SET_PURGE_FAILURE_MODE_ENABLED set, verrà emesso un FSCTL_SET_PURGE_FAILURE_MODE con il set di SET_PURGE_FAILURE_MODE_DISABLED. Anche se è presente un SET_PURGE_FAILURE_MODE_ENABLED in sospeso, Gestione filtri risponde come segue a determinati stati di errore per determinati tipi di operazioni (vedere la tabella seguente):
• Esegue l'operazione, accelerando la chiusura della sezione (ove possibile) • Accoda nuovamente l'operazione al minifiltro o al file system che ha emesso l'errore
Per attivare gestione filtri per rispondere di conseguenza, il file system (o il filtro) risponde a un errore di eliminazione di una sezione nei modi seguenti:
Operazione | Stato restituito obbligatorio |
---|---|
IRP_MJ_CREATE (operazioni distruttive) | STATUS_USER_MAPPED_FILE |
IRP_MJ_WRITE (solo operazioni non memorizzate) | STATUS_PURGE_FAILED |
IRP_MJ_SET_INFORMATION | STATUS_PURGE_FAILED |
Questi stati devono essere restituiti solo quando è presente un SET_PURGE_FAILURE_MODE_ENABLED in sospeso (nessun bilanciamento SET_PURGE_FAILURE_MODE_DISABLED ricevuto). In tutti gli altri casi, gli stati di errore verranno restituiti all'applicazione.
Per qualsiasi altra operazione (ad esempio, una scrittura memorizzata nella cache), se il file system (o il filtro) non riesce a ripulire una sezione mentre è presente un FSCTL_SET_PURGE_FAILURE_MODE in sospeso, è responsabile dell'attesa dell'operazione e della nuova esecuzione quando il conteggio delle FSCTL_SET_PURGE_FAILURE_MODE in sospeso scende a zero. Se il file system (o il filtro) restituisce solo uno stato di errore (inclusi quelli elencati in precedenza), tale stato verrà restituito all'applicazione.
Lo stato di errore viene elaborato interamente all'interno di Gestione filtri, così come la ripetizione della coda dell'operazione non riuscita. Ciò significa che nessuno dei due è visibile ai filtri, con le implicazioni importanti seguenti:
- Gli strumenti di monitoraggio del file system, ad esempio Monitoraggio processi , non segnalano queste operazioni.
- Se è necessario coinvolgere un filtro superiore per l'esito positivo dell'operazione di nuovo rilascio, l'operazione di accodamento avrà esito negativo. In questo caso, i writer di filtri sono necessari per garantire che questo secondo filtro restituisca lo stato di errore.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Intestazione | ntifs.h |