Поделиться через


API МПП

API платформы фильтрации Windows (МПП) делится на следующие компоненты.

Компонент Описание Файлы заголовков
API выноски (FWPS)${REMOVE}$
типы данных используются выносками.примечание Эти типы данных описаны в пакете средств разработки драйверов Microsoft Windows (DDK).
fwpstypes.h
fwpstypes.idl
Функции и перечисленные типы, используемые для реализации выносок.примечание Эти функции и перечисленные типы документируются в DDK.
fwpsu.h
fwpsk.h
API IKE/AuthIP (IKEEXT)${REMOVE}$
Перечисленные типы и структуры , используемые для управления политиками и связями безопасности основного режима IKE и AuthIP (MM).
iketypes.h
iketypes.idl
Функции, используемые для управления политиками и связями безопасности IKE и AuthIP MM.
fwpmu.h
fwpmk.h
API IPsec (IPSEC)${REMOVE}$
Перечисленные типы и структуры , используемые для управления политиками и сопоставлениями безопасности IPsec.
ipsectypes.h
ipsectypes.idl
Функции, используемые для управления политиками IPsec и сопоставлениями безопасности.
fwpmu.h
fwpmk.h
API управления (FWPM)${REMOVE}$
Перечислимые типы и структуры , используемые для управления обработчиком фильтров.
fwpmtypes.h
fwpmtypes.idl
Функции, используемые для управления обработчиком фильтров. Эти функции используются для выполнения следующих задач:
  • Установка и запрос фильтров, поставщиков и выносок.
  • Получение статистики IPsec.
  • Настройте платформу фильтрации Windows.
fwpmu.h
fwpmk.h
Общий API (FWP) Основные перечисленные типы и структуры совместно используются на платформе фильтрации Windows.
fwptypes.h
fwptypes.idl

Имена типов данных являются верхним регистром и разделителями подчеркивания. Имя всегда начинается с префикса, который определяет свою группу компонентов, например FWPM_PROVIDER0.

Имена функций являются смешанными и разделенными регистрами. Имя всегда начинается с префикса, который определяет свою группу компонентов, например FwpmProviderContextAdd0.

Большинство имен данных и функций заканчиваются номером версии. Файл заголовка fwpvi.h сопоставляет независимые от версии данные и имена функций с версией, которая подходит для использования с заданной операционной системой. Дополнительные сведения см. в статье ВПП Version-Independent имен и целевых версий Windows.

Каждый компонент не стоит отдельно. Например, политики основного режима IKE (MM) определяются в компоненте IKEEXT, но хранятся в контексте поставщика и связаны с фильтром обоих из которых находятся в компоненте API FWPM.

User-Mode и Kernel-Mode общедоступные файлы заголовков

Большинство функций МПП можно вызывать из пользовательского режима или режима ядра. Однако функции пользовательского режима возвращают значение DWORD, представляющее код ошибки Win32, в то время как функции режима ядра возвращают значение NTSTATUS значение, представляющее код состояния NT. В результате имена функций и семантика идентичны между пользовательским режимом и режимом ядра, но подписи функций не являются. Для этого требуются отдельные заголовки пользовательского режима и режима ядра для прототипов функций. Имена файлов заголовков в пользовательском режиме заканчиваются в именах файлов заголовков u и в режиме ядра в конце "k".

В следующей таблице перечислены файлы заголовков Win32, определяющие функции МПП.

Файлы заголовков Описание
fwpmk.h Прототипы функций в режиме ядра для компонентов FWPM, IPsec и IKEEXT. Доступно только в DDK.
fwpmu.h Прототипы функций в режиме пользователя для компонентов FWPM, IPsec и IKEEXT. Доступно только в пакете средств разработки программного обеспечения Microsoft Windows (SDK).
fwpsk.h Прототипы функций в режиме ядра и перечисленные типы для компонента FWPS. Доступно только в DDK.
fwpsu.h Прототипы функций в режиме пользователя и перечисленные типы для компонента FWPS. Доступно только в пакете SDK для Windows.Примечание перечисленные типы FWPS в пользовательском режиме идентичны перечисленным типам FWPS в режиме ядра. В результате эти типы документируются только в DDK.
примечание прототипы функций FWPS в пользовательском режиме идентичны прототипам функций FWPS в режиме ядра, за исключением возвращаемого кода. Функции FWPS в пользовательском режиме возвращают DWORD, а функции FWPS в режиме ядра возвращают NTSTATUS. В результате эти функции документируются только в DDK.

Все функции пользовательского режима экспортируются из fwpuclnt.dll. Все функции режима ядра экспортируются из fwpkclnt.sys.

Типы данных управления (FWPM) и выноски (FWPS)

Большинство типов данных FWPM, которые используются для задач управления, таких как добавление фильтров или выносок из приложения или драйвера, имеют аналоги FWPS. Типы данных FWPS используются во время фактической фильтрации сетевого трафика в контексте подпрограммы выноски для классификации.

Например, чтобы добавить фильтр в определенный уровень подсистемы фильтрации, программист должен использовать тип FWPM, например: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET. Чтобы проверить, из какого слоя вызывается выноска, программист должен использовать соответствующий тип FWPS: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET).

Некоторые аналоги FWPS в типах данных FWPM расширяют исходные типы данных FWPM. Например, чтобы добавить условие фильтра во многих слоях подсистемы фильтрации, программист указывает filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL независимо от уровня подсистемы фильтрации. Чтобы найти значение условия фильтра, программист задает определенный уровень типа FWPS, например: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL].

Типы данных FWPS обычно меньше, чем их коллеги FWPM. Например, идентификаторы слоя фильтрации FWPMGUID(16 байт), а идентификаторы уровня фильтрации FWPS UINT16 (16-разрядные). Меньший размер для типов данных FWPS повышает производительность системы, так как целочисленные сравнения перевешивают GUID сравнения трафика в режиме реального времени. Кроме того, память ядра эффективно используется, так как типы FWPS используются в ядре для управления фильтрами, в то время как типы FWPM хранятся в пользовательском режиме для управления различными слоями.

объектной модели API МПП

управление объектами API МПП