다음을 통해 공유


처리 흐름 삭제 설명선

설명선에서 처리 중인 데이터 흐름이 중지되면 설명선 드라이버가 이전에 컨텍스트를 데이터 흐름과 연결한 경우 필터 엔진은 설명선의 flowDeleteFn 설명선 함수를 호출합니다. 설명선의 flowDeleteFn 설명선 함수는 데이터 흐름이 중지되기 전에 설명선 드라이버가 데이터 흐름과 연결된 컨텍스트에서 필요한 클린 수행합니다.

예:

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

필터 엔진은 데이터 흐름이 중지될 때 데이터 흐름과 연결된 설명선이 컨텍스트를 자동으로 제거합니다. 따라서 설명선은 flowDeleteFn 설명선 함수에서 FwpsFlowRemoveContext0 함수를 호출하여 데이터 흐름에서 컨텍스트를 제거할 필요가 없습니다.