Processando textos explicativos de exclusão de fluxo

Quando um fluxo de dados que está sendo processado por um texto explicativo é interrompido, o mecanismo de filtro chama a função de texto explicativo flowDeleteFn do texto explicativo se o driver de texto explicativo anteriormente associou um contexto ao fluxo de dados. A função de texto explicativo flowDeleteFn de um texto explicativo executa qualquer limpo necessário no contexto em que o driver de texto explicativo associado ao fluxo de dados antes que o fluxo de dados seja interrompido.

Por exemplo:

// 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
    );
}

O mecanismo de filtro remove automaticamente o contexto que um texto explicativo associado a um fluxo de dados quando o fluxo de dados é interrompido. Portanto, um texto explicativo não é necessário para chamar a função FwpsFlowRemoveContext0 de sua função de texto explicativo flowDeleteFn para remover o contexto do fluxo de dados.