Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При остановке потока данных, обрабатываемого вызовом, фильтрующий механизм вызывает функцию 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
);
}
Модуль фильтров автоматически удаляет контекст, связанный с привязкой к потоку данных, при остановке этого потока. Поэтому выноска не требуется для вызова функции FwpsFlowRemoveContext0 из функции выноски flowDeleteFn , чтобы удалить контекст из потока данных.