Bagikan melalui


Memproses Callout Penghapusan Alur

Saat aliran data yang sedang diproses oleh callout dihentikan, mesin filter memanggil fungsi callout flowDeleteFn callout jika driver callout sebelumnya mengaitkan konteks dengan aliran data. Fungsi callout flowDeleteFn callout melakukan pembersihan konteks yang diperlukan agar driver callout yang terkait dengan aliran data sebelum aliran data dihentikan.

Contohnya:

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

Mesin filter secara otomatis menghapus konteks bahwa callout yang terkait dengan aliran data saat aliran data dihentikan. Oleh karena itu, callout tidak diperlukan untuk memanggil fungsi FwpsFlowRemoveContext0 dari fungsi callout flowDeleteFn-nya untuk menghapus konteks dari aliran data.