Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un pilote minifilter peut utiliser la routine FltCancelFileOpen pour fermer un fichier nouvellement ouvert ou créé.
Syntaxe
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
Paramètres
[in] Instance
Pointeur d’instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.
[in] FileObject
Pointeur d’objet de fichier pour le fichier. Ce paramètre est obligatoire et ne peut pas être NULL.
Valeur de retour
Aucun
Remarques
Si un pilote minifilter détermine qu’une opération de création de fichiers ou de création de fichiers (IRP_MJ_CREATE) doit échouer une fois que le système de fichiers a déjà terminé l’opération avec une valeur NTSTATUS réussie telle que STATUS_SUCCESS, le pilote minifilter peut appeler FltCancelFileOpen à partir de sa routine de rappel post-création pour fermer le fichier.
Notez que FltCancelFileOpen n’annule aucune modification du fichier. Par exemple, FltCancelFileOpen ne supprime pas un fichier nouvellement créé ou ne restaure pas un fichier qui a été remplacé ou remplacé à son état précédent.
FltCancelFileOpen doit être appelée avant la création de handles pour le fichier. Les appelants peuvent vérifier les indicateurs membre de la structure FILE_OBJECT vers laquelle pointe le paramètre FileObject. Si l’indicateur FO_HANDLE_CREATED est défini, cela signifie qu’un ou plusieurs handles ont été créés pour le fichier. Il n’est donc pas sûr d’appeler FltCancelFileOpen.
FltCancelFileOpen définit l’indicateur de FO_FILE_OPEN_CANCELLED dans le membre Flags de l’objet de fichier vers lequel FileObject pointe. Cet indicateur indique que l’opération de création a été annulée et qu’une demande de fermeture (IRP_MJ_CLOSE) sera émise pour cet objet de fichier.
Une fois l’opération de création annulée, elle ne peut pas être rééditée. Pour plus d’informations, consultez FltReissueSynchronousIo.
FltCancelFileOpen ne peut être appelé qu’à partir d’une routine de rappel post-création d’un pilote minifilter. L’appel de FltCancelFileOpen à partir d’une routine de rappel de postopération (PFLT_POST_OPERATION_CALLBACK) pour tout autre type d’opération d’E/S, ou l’appel à partir d’une routine de rappel de préopération (PFLT_PRE_OPERATION_CALLBACK), est une erreur de programmation.
Les appelants de FltCancelFileOpen doivent s’exécuter au PASSIVE_LEVEL IRQL. Toutefois, il est sûr que les pilotes minifilter appellent cette routine à partir d’une routine de rappel post-création, car les routines de rappel post-création sont garanties d’être appelées au PASSIVE_LEVEL IRQL, dans le contexte du thread qui provient de la demande de IRP_MJ_CREATE.
Exigences
| Exigence | Valeur |
|---|---|
| plateforme cible | Universel |
| d’en-tête | fltkernel.h (include Fltkernel.h) |
| bibliothèque | FltMgr.lib |
| DLL | Fltmgr.sys |
| IRQL | PASSIVE_LEVEL (voir la section Remarques) |