е незалежного мережевого зближення - для перенесення через численні мережі
Наступним кроком необхідно додати підрівень, в який, надалі, пропишемо наш фільтр.
Для цього створимо змінну типу FWPM_SUBLAYER0
typedefstruct FWPM_SUBLAYER0_ {subLayerKey; _DISPLAY_DATA0displayData; flags; * providerKey; _BYTE_BLOB providerData; weight;
} FWPM_SUBLAYER0;
де: Унікальний ідентифікатор підрівня (GUID).
displayData Назва та опис підрівня у зрозумілій для користувача формі.
Flags Прапор. Повинен бути FWPM_SUBLAYER_FLAG_PERSISTENT Унікальний ідентифікатор провайдера, керуючого даними подуровнем. p align="justify"> providerData Специфічні дані провайдера.
Weight Вага підрівня. Підрівні з великою вагою викликаються раніше. p align="justify"> Додамо створений підрівень у систему за допомогою методу FwpmSubLayerAdd0
DWORD WINAPI FwpmSubLayerAdd0 (
__in HANDLE engineHandle,
__in const FWPM_SUBLAYER0 * subLayer,
__in_opt PSECURITY_DESCRIPTOR sd
);
де:
engineHandle мінлива для відкриття роботи з фільтром.
subLayer додається підрівень
sd інформація про безпеку для даного підрівня
У разі успіху операції метод повертає ERROR_SUCCESS.
Тепер створимо вже безпосередньо фільтр. Для цього оголосимо і проініціалізіруем змінну типу FWPM_FILTER0:
typedefstruct FWPM_FILTER0_ {; _DISPLAY_DATA0displayData; flags; * providerKey; _BYTE_BLOB providerData;;; _VALUE0 weight; numFilterConditions; _FILTER_CONDITION0 * filterCondition; _ACTION0 action; {rawContext; providerContextKey;
}; * reserved; filterId; _VALUE0effectiveWeight;
} FWPM_FILTER0;
де: Унікальний ідентифікатор фільтра (GUID).
displayData Назва та опис фільтра у зрозумілій для користувача формі.
FlagsКомбінація значень. Для нашої задачі береться значення за замовчуванням - FWPM_FILTER_FLAG_NONE
providerKey Унікальний ідентифікатор провайдера, керуючого даними подуровнем.
providerData Специфічні дані провайдера.
layerKeyУнікальний ідентифікатор рівня, на який потрібно додати фільтр.
FilteringLayerIdentifiers <# "justify"> Додамо створений фільтр за допомогою методу FwpmFilterAdd0
DWORD WINAPI FwpmFilterAdd0 (
__in HANDLE engineHandle,
__in const FWPM_FILTER0 * filter,
__in_opt SECURITY_DESCRIPTOR sd,
__out_op...