Funzione FltCancelFileOpen (fltkernel.h)
Un driver minifiltro può usare la routine FltCancelFileOpen per chiudere un file appena aperto o creato.
Sintassi
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
Parametri
[in] Instance
Puntatore dell'istanza opaca per il chiamante. Questo parametro è obbligatorio e non può essere NULL.
[in] FileObject
Puntatore all'oggetto file per il file. Questo parametro è obbligatorio e non può essere NULL.
Valore restituito
Nessuno
Osservazioni
Se un driver minifiltro determina che un'operazione di creazione di file (IRP_MJ_CREATE) può avere esito negativo dopo che il file system ha già completato l'operazione con un valore NTSTATUS riuscito, ad esempio STATUS_SUCCESS, il driver minifilter può chiamare FltCancelFileOpen dalla routine di callback post-creazione per chiudere il file.
Si noti che FltCancelFileOpen non annulla alcuna modifica al file. Ad esempio, FltCancelFileOpen non elimina un file appena creato o ripristina un file sovrascritto o sostituito con lo stato precedente.
FltCancelFileOpen deve essere chiamato prima che vengano creati handle per il file. I chiamanti possono controllare il membro flag della struttura di FILE_OBJECT a cui punta il parametro FileObject. Se il flag FO_HANDLE_CREATED è impostato, significa che uno o più handle sono stati creati per il file, pertanto non è possibile chiamare FltCancelFileOpen.
FltCancelFileOpen imposta il flag di FO_FILE_OPEN_CANCELLED nel membro flag dell'oggetto file a cui punta FileObject. Questo flag indica che l'operazione di creazione è stata annullata e verrà eseguita una richiesta di chiusura (IRP_MJ_CLOSE) per questo oggetto file.
Dopo l'annullamento dell'operazione di creazione, non può essere riemesso. Per altre informazioni, vedere FltReissueSynchronousIo.
FltCancelFileOpen può essere chiamato solo da una routine di callback post-creazione di un driver minifilter. La chiamata di FltCancelFileOpen da una routine di callback postoperativo (PFLT_POST_OPERATION_CALLBACK) per qualsiasi altro tipo di operazione di I/O o chiamandola da una routine di callback preoperatorio (PFLT_PRE_OPERATION_CALLBACK) è un errore di programmazione.
I chiamanti di FltCancelFileOpen devono essere in esecuzione in irQL PASSIVE_LEVEL. Tuttavia, è possibile che i driver minifilter chiamino questa routine da una routine di callback post-creazione, perché è garantito che le routine di callback post-creazione vengano chiamate in irQL PASSIVE_LEVEL, nel contesto del thread che ha originato la richiesta di IRP_MJ_CREATE.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | fltkernel.h (include Fltkernel.h) |
libreria | FltMgr.lib |
dll | Fltmgr.sys |
IRQL | PASSIVE_LEVEL (vedere la sezione Osservazioni) |