Légendes de suppression de flux de traitement
Lorsqu’un flux de données en cours de traitement par une légende est arrêté, le moteur de filtre appelle la fonction de légende flowDeleteFn de la légende si le pilote de légende a précédemment associé un contexte au flux de données. La fonction de légende flowDeleteFn d’une légende effectue toutes les propre nécessaires du contexte que le pilote de légende associé au flux de données avant l’arrêt du flux de données.
Par exemple :
// Context structure to be associated with data flows
typedef struct FLOW_CONTEXT_ {
...
} FLOW_CONTEXT, *PFLOW_CONTEXT;
#define FLOW_CONTEXT_POOL_TAG 'fcpt'
// flowDeleteFn callout function
VOID NTAPI
FlowDeleteFn(
IN UINT16 layerId,
IN UINT32 calloutId,
IN UINT64 flowContext
)
{
PFLOW_CONTEXT context;
// Get the flow context structure
context = (PFLOW_CONTEXT)flowContext;
// Cleanup the flow context structure
...
// Free the memory for the flow context structure
ExFreePoolWithTag(
context,
FLOW_CONTEXT_POOL_TAG
);
}
Le moteur de filtre supprime automatiquement le contexte associé à une légende à un flux de données lors de l’arrêt du flux de données. Par conséquent, une légende n’est pas nécessaire pour appeler la fonction FwpsFlowRemoveContext0 à partir de sa fonction de légende flowDeleteFn pour supprimer le contexte du flux de données.