Функция FwpsFlowAssociateContext0 (fwpsk.h)
Функция FwpsFlowAssociateContext0 связывает определенный драйвером выноски контекст с потоком данных.
Синтаксис
NTSTATUS FwpsFlowAssociateContext0(
[in] UINT64 flowId,
[in] UINT16 layerId,
[in] UINT32 calloutId,
[in] UINT64 flowContext
);
Параметры
[in] flowId
Идентификатор времени выполнения, указывающий поток данных, с которым связывается контекст. Идентификатор времени выполнения для потока данных предоставляется драйверу выноски через значение метаданных FWPS_METADATA_FIELD_FLOW_HANDLE, переданное функции выноски classifyFn драйвера выноски.
[in] layerId
Идентификатор времени выполнения для слоя фильтрации, с которым связан контекст. Контекст будет связан только с указанным уровнем фильтрации. Дополнительные сведения см. в разделе Идентификаторы слоев фильтрации во время выполнения.
[in] calloutId
Идентификатор времени выполнения для выноски в обработчике фильтров. Этот идентификатор был возвращен, когда драйвер выноски вызывал функцию FwpsCalloutRegister0, FwpsCalloutRegister1 или FwpsCalloutRegister2 для регистрации выноски в обработчике фильтров.
[in] flowContext
Контекст, определяемый драйвером выноски, который будет связан с потоком данных. Этот параметр не должен быть равен нулю. Этот контекст непрозрачн для механизма фильтрации.
Возвращаемое значение
Функция FwpsFlowAssociateContext0 возвращает один из следующих кодов NTSTATUS.
Код возврата | Описание |
---|---|
|
Контекст был успешно связан с потоком данных. |
|
Параметр flowContext имеет значение NULL или выноска, указанная параметром calloutID , не имеет зарегистрированного объекта flowDeleteFn . |
|
Контекст уже связан с потоком данных. В этом случае драйвер выноски должен сначала вызвать функцию FwpsFlowRemoveContext0 , чтобы удалить существующий контекст, а затем снова вызвать функцию FwpsFlowAssociateContext0 , чтобы связать новый контекст с потоком данных. |
|
Произошла ошибка. |
Комментарии
При фильтрации потока данных драйвер выноски может вызвать функцию FwpsFlowAssociateContext0 , чтобы связать контекст с потоком данных. Затем он может использовать этот контекст для сохранения любых данных или сведений о состоянии драйвера между вызовами подсистемы фильтрации функции выноски classifyFn выноски для этого потока данных.
В подсистеме фильтрации на уровне, определяемом параметром layerId , должна быть выноска, которая зарегистрировала функцию выноски flowDeleteFn . В противном случае вызов функции FwpsFlowAssociateContext0 вернет STATUS_INVALID_PARAMETER. Модуль фильтрации вызывает функцию выноски flowDeleteFn при завершении потока, чтобы драйвер выноски смог очистить контекст, связанный с потоком.
FwpsFlowAssociateContext0 можно вызывать несколько раз для одного потока. В каждом вызове необходимо указать другую выноску и другой контекст — по одному контексту для каждой добавленной выноски.
Функция FwpsFlowAssociateContext0 связывает один контекст с одной добавленной выноской.
С потоком можно связать несколько контекстов. Однако каждый контекст должен быть связан с другой выноской. Новая выноска может находиться на том же уровне, что и предыдущий, или на другом уровне.
Дополнительные сведения и пример кода см. в разделах Связывание контекста с Поток данных и Пример платформы фильтрации Windows.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows Vista. |
Целевая платформа | Универсальное |
Верхняя часть | fwpsk.h (включая Fwpsk.h) |
Библиотека | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |
См. также раздел
Связывание контекста с Поток данных