Partager via


pointeur de fonction PFREE_FUNCTION

Un pilote de filtre hérité du système de fichiers peut inscrire une PFREE_FUNCTION routine typée en tant que routine de rappel FreeCallback du filtre. Le système de fichiers appelle FreeCallback lorsque le système de fichiers supprime un objet de contexte de fichier à l’aide de FsRtlTeardownPerFileContexts ou supprime un objet de contexte de flux à l’aide de FsRtlTeardownPerStreamContexts.

Vous devez déclarer la routine de rappel à l’aide du type FREE_FUNCTION . Pour plus d’informations, consultez l’exemple dans la section Remarques.

Syntaxe

typedef VOID ( *FreeCallback)(
  _In_ PVOID Buffer
);

Paramètres

Valeur de retour

None

Remarques

Lorsqu’un système de fichiers supprime l’objet de contexte par fichier pour un fichier, il doit appeler FsRtlTeardownPerFileContexts. Cette routine appelle les routines FreeCallback de toutes les structures de contexte par fichier associées au fichier. Cette routine de rappel doit libérer toute la mémoire utilisée pour l’objet FSRTL_PER_FILE_CONTEXT et toutes les informations de contexte associées. C’est également le cas pour les contextes par flux lorsque FsRtlTeardownPerStreamContexts est appelé et que FreeCallback libère la mémoire utilisée pour FSRTL_PER_STREAM_CONTEXT objets.

Pour obtenir des remarques sur la synchronisation de l’accès aux objets de contexte par fichier ou aux objets de contexte par flux lors d’un appel à FreeCallback, consultez FsRtlTeardownPerFileContexts et FsRtlTeardownPerStreamContexts.

Notes

La routine FreeCallback ne peut pas appeler de manière récursive dans le système de fichiers ou acquérir des ressources de système de fichiers.

Pour définir une fonction de rappel FreeCallback nommée MyFreeFunction, vous devez d’abord fournir une déclaration de fonction requise par le vérificateur de pilote statique (SDV) et d’autres outils de vérification, comme suit :

FREE_FUNCTION MyFreeFunction;

Puis implémentez votre fonction de rappel comme suit :

VOID
 MyFreeFunction (
 __in PVOID Buffer
    )
  {...}

Configuration requise

Type d’exigence Condition requise
Client minimal pris en charge Windows Vista
En-tête Wdm.h (inclure Wdm.h ou Ntddk.h)
IRQL <= APC_LEVEL

Voir aussi

FsRtlTeardownPerFileContexts

FsRtlTeardownPerStreamContexts

FSRTL_PER_FILE_CONTEXT

FSRTL_PER_STREAM_CONTEXT

Suivi Per-File contexte dans un pilote de filtre de système de fichiers hérité

Suivi Per-Stream contexte dans un pilote de filtre de système de fichiers hérité