Partager via


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.