Partager via


Fonction FltDeleteContext (fltkernel.h)

FltDeleteContext marque un contexte spécifié pour la suppression.

Syntaxe

VOID FLTAPI FltDeleteContext(
  [in] PFLT_CONTEXT Context
);

Paramètres

[in] Context

Pointeur vers le contexte à supprimer. Ce paramètre est obligatoire et ne peut pas être NULL.

Valeur retournée

Aucun.

Notes

Pour plus d’informations sur les contextes, consultez À propos des contextes de minifiltre.

Étant donné que les contextes sont comptés en référence, il n’est généralement pas nécessaire qu’un pilote minifilter appelle une routine, telle que FltDeleteContext, pour supprimer explicitement un contexte.

FltDeleteContext marque un contexte de suppression. Le contexte est généralement libéré dès la publication de la référence actuelle sur celui-ci, sauf s’il y a une référence en suspens (par exemple, parce que le contexte est toujours utilisé par un autre thread).

Vous devez prendre en compte les éléments suivants lorsque vous utilisez FltDeleteContext :

  • Lorsqu’un pilote minifilter appelle FltDeleteContext, le pilote minifilter doit déjà avoir une référence au contexte. Toutefois, lorsque le pilote minifilter appelle FltDeleteStreamHandleContext, FltDeleteStreamContext, FltDeleteInstanceContext, etc., le pilote minifilter ne nécessite pas de référence au contexte. Une fois que le pilote minifilter a appelé FltDeleteContext, cette référence au contexte est toujours valide. Le pilote minifilter doit appeler la routine FltReleaseContext pour libérer la référence au contexte.

  • FltDeleteContext supprime le contexte des structures de gestionnaire de filtres internes. Ensuite, d’autres appels à des fonctions qui obtiennent des contextes, comme FltGetContexts et FltGetInstanceContext, ne peuvent pas localiser ce contexte. Toutefois, la mémoire de contexte n’est pas libérée tant que le nombre de références pour le contexte n’est pas atteint à 0.

Les contextes peuvent également être supprimés en appelant la routine delete-context appropriée dans le tableau suivant.

Type de contexte Delete-Context Routine
FLT_FILE_CONTEXT FltDeleteFileContext (Windows Vista et versions ultérieures uniquement.)
FLT_INSTANCE_CONTEXT FltDeleteInstanceContext
FLT_SECTION_CONTEXT FltCloseSectionForDataScan (Windows 8 et versions ultérieures uniquement.)
FLT_STREAM_CONTEXT FltDeleteStreamContext
FLT_STREAMHANDLE_CONTEXT FltDeleteStreamHandleContext
FLT_TRANSACTION_CONTEXT FltDeleteTransactionContext (Windows Vista et versions ultérieures uniquement.)
FLT_VOLUME_CONTEXT FltDeleteVolumeContext

Pour allouer un nouveau contexte, appelez FltAllocateContext.

Pour incrémenter le nombre de références sur un contexte, appelez FltReferenceContext.

Pour décrémenter le nombre de références sur un contexte, appelez FltReleaseContext.

Un contexte de section, FLT_SECTION_CONTEXT type, ne doit pas être supprimé à l’aide de FltDeleteContext. Utilisez plutôt FltReleaseContext pour libérer un contexte de section.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Voir aussi

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext