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

IRP_MJ_DEVICE_CONTROL

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

Vedi anche

SET_PURGE_FAILURE_MODE_INPUT