Partager via


FltDeleteContext, fonction (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 de retour

Aucun.

Remarques

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

Étant donné que les contextes sont comptabilisés par 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 que la référence actuelle est publiée, sauf s’il existe une référence en attente sur celle-ci (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, et ainsi de suite, le pilote minifilter ne nécessite pas de référence au contexte. Une fois que le pilote minifilter appelle 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 du gestionnaire de filtres internes. Ensuite, d’autres appels aux fonctions qui obtiennent des contextes, tels que 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 du contexte n’est pas égal à 0.

Les contextes peuvent également être supprimés en appelant la routine de contexte de suppression appropriée dans le tableau suivant.

Type de contexte routine Delete-Context
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.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Voir aussi

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext