структура FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)

Структура FWPS_INCOMING_METADATA_VALUES0 определяет значения метаданных, которые подсистема фильтров передает функции выноски classifyFn выноски.

ПримечаниеFWPS_INCOMING_METADATA_VALUES0 — это определенная версия FWPS_INCOMING_METADATA_VALUES. Дополнительные сведения см. в разделах Имена Version-Independent и Выбор конкретных версий Windows .
 

Синтаксис

typedef struct FWPS_INCOMING_METADATA_VALUES0_ {
  UINT32                          currentMetadataValues;
  UINT32                          flags;
  UINT64                          reserved;
  FWPS_DISCARD_METADATA0          discardMetadata;
  UINT64                          flowHandle;
  UINT32                          ipHeaderSize;
  UINT32                          transportHeaderSize;
  FWP_BYTE_BLOB                   *processPath;
  UINT64                          token;
  UINT64                          processId;
  UINT32                          sourceInterfaceIndex;
  UINT32                          destinationInterfaceIndex;
  ULONG                           compartmentId;
  FWPS_INBOUND_FRAGMENT_METADATA0 fragmentMetadata;
  ULONG                           pathMtu;
  HANDLE                          completionHandle;
  UINT64                          transportEndpointHandle;
  SCOPE_ID                        remoteScopeId;
  WSACMSGHDR                      *controlData;
  ULONG                           controlDataLength;
  FWP_DIRECTION                   packetDirection;
  PVOID                           headerIncludeHeader;
  ULONG                           headerIncludeHeaderLength;
  IP_ADDRESS_PREFIX               destinationPrefix;
  UINT16                          frameLength;
  UINT64                          parentEndpointHandle;
  UINT32                          icmpIdAndSequence;
  DWORD                           localRedirectTargetPID;
  SOCKADDR                        *originalDestination;
  HANDLE                          redirectRecords;
  UINT32                          currentL2MetadataValues;
  UINT32                          l2Flags;
  UINT32                          ethernetMacHeaderSize;
  UINT32                          wiFiOperationMode;
  NDIS_SWITCH_PORT_ID             vSwitchSourcePortId;
  NDIS_SWITCH_NIC_INDEX           vSwitchSourceNicIndex;
  NDIS_SWITCH_PORT_ID             vSwitchDestinationPortId;
  UINT32                          padding0;
  USHORT                          padding1;
  UINT32                          padding2;
  HANDLE                          vSwitchPacketContext;
  PVOID                           subProcessTag;
  UINT64                          reserved1;
} FWPS_INCOMING_METADATA_VALUES0;

Члены

currentMetadataValues

Значение UINT32, содержащее побитовое или сочетание идентификаторов полей метаданных , которые указывают, какие значения метаданных заданы в структуре.

flags

Используется внутренним механизмом фильтрации. Драйверы выносок должны игнорировать этот элемент.

reserved

Зарезервировано для системного использования. Драйверы выносок должны игнорировать этот элемент.

discardMetadata

Структура FWPS_DISCARD_METADATA0 , описывающая причину, по которой данные были удалены. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_DISCARD_REASON установлен в элементе currentMetadataValues .

flowHandle

Дескриптор потока данных. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_FLOW_HANDLE установлен в элементе currentMetadataValues .

ipHeaderSize

Смещение (в байтах) ip-заголовка.

Для входящих путей ipHeaderSize при использовании в сочетании с членом transportHeaderSize указывает количество байтов, отступаемых от расположения смещения данных к началу ip-заголовка.

На следующих уровнях ошибок ICMP для входящих подключений ipHeaderSize указывает общее количество байтов, отступаемых от смещения данных к началу заголовка IP:

FWPS_LAYER_INBOUND_ICMP_ERROR_V4

FWPS_LAYER_INBOUND_ICMP_ERROR_V6

FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD

FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD

Если значение ipHeaderSize больше нуля, то в исходящих путях указывается число байтов для перехода из расположения смещения данных в конец ip-заголовка.

Этот элемент неприменим к исходящему пути на следующих уровнях:

FWPS_LAYER_DATAGRAM_DATA_V4

FWPS_LAYER_DATAGRAM_DATA_V6

FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD

FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD

Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_IP_HEADER_SIZE установлен в элементе currentMetadataValues .

transportHeaderSize

Смещение или размер (в байтах) заголовка транспорта.

Для входящих путей transportHeaderSize указывает количество байтов, отступаемых от расположения смещения данных до конца заголовка транспорта.

На следующих уровнях ошибок ICMP для входящих подключений transportHeaderSize указывает размер заголовка ICMP:

FWPS_LAYER_INBOUND_ICMP_ERROR_V4

FWPS_LAYER_INBOUND_ICMP_ERROR_V6

FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD

FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD

В исходящих путях transportHeaderSize указывает количество байтов, которые необходимо перенести из расположения смещения данных в конец заголовка транспорта.

Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_TRANSPORT_HEADER_SIZE установлен в элементе currentMetadataValues .

processPath

Указатель на структуру FWP_BYTE_BLOB , содержащую полный путь к процессу, которому принадлежит конечная точка. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_PROCESS_PATH установлен в элементе currentMetadataValues .

token

Дескриптор маркера, используемого для проверки разрешений пользователя. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_TOKEN установлен в элементе currentMetadataValues .

processId

Идентификатор процесса для процесса, которому принадлежит конечная точка. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_PROCESS_ID установлен в элементе currentMetadataValues .

sourceInterfaceIndex

Индекс сетевого интерфейса, в котором был получен входящий пакет. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_SOURCE_INTERFACE_INDEX установлен в элементе currentMetadataValues .

destinationInterfaceIndex

Индекс сетевого интерфейса, в который отправляется исходящий пакет. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_DESTINATION_INTERFACE_INDEX установлен в элементе currentMetadataValues .

compartmentId

Идентификатор секции маршрутизации, в которой был получен или отправлен пакет. Все измененные пакеты следует внедрять обратно в тот же отсек маршрутизации, который указан для исходного пакета. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_COMPARTMENT_ID установлен в элементе currentMetadataValues .

fragmentMetadata

Обычного FWPS_INBOUND_FRAGMENT_METADATA0 структура, описывающая данные фрагмента для полученного фрагмента пакета. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_FRAGMENT_DATA установлен в элементе currentMetadataValues .

pathMtu

Максимальная единица передачи пути (MTU) для исходящего пакета. Это значение указывает наибольший размер физического пакета (в байтах), который может передавать сеть без фрагментации. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_PATH_MTU установлен в элементе currentMetadataValues .

completionHandle

Дескриптор завершения, необходимый для выполнения текущей операции фильтрации. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_COMPLETION_HANDLE установлен в элементе currentMetadataValues .

transportEndpointHandle

Дескриптор конечной точки, указывающий конец пакета, который будет внедрен в уровень исходящего транспорта. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE установлен в элементе currentMetadataValues .

remoteScopeId

Удаленный область идентификатор, используемый при внедрении исходящего транспортного слоя. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_REMOTE_SCOPE_ID установлен в элементе currentMetadataValues .

controlData

Необязательный объект данных элемента управления сокетом. Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA установлен в элементе currentMetadataValues . Сведения о типе WSACMSGHDR см. в разделе CMSGHDR.

controlDataLength

Длина элемента controlData в байтах.

packetDirection

Направление сетевого трафика (входящего или исходящего), указанного в одном из значений константы
FWP_DIRECTION. Этот элемент задается на уровнях подключения или получения и принятия во время операции классификации повторной проверки подлинности. Дополнительные сведения см. в разделе «Примечания».

Примечание Этот элемент содержит допустимые данные, только если флаг FWPS_METADATA_FIELD_PACKET_DIRECTION установлен в элементе currentMetadataValues .
 

headerIncludeHeader

Указатель на заголовок IP, если пакет отправляется из необработанного сокета.

Примечание Доступно только в Windows Server 2008, Windows Vista с пакетом обновления 1 (SP1) и более поздних версиях Windows.
 

headerIncludeHeaderLength

Длина (в байтах) ip-заголовка, на который указывает headerIncludeHeader.

Примечание Доступно только в Windows Server 2008, Windows Vista с пакетом обновления 1 (SP1) и более поздних версиях Windows.
 

destinationPrefix

Префикс назначения.

Примечание Доступно только в Windows 7 и более поздних версиях Windows.
 

frameLength

Длина кадра.

Примечание Доступно только в Windows 7 и более поздних версиях Windows.
 

parentEndpointHandle

Дескриптор родительского объекта конечной точки.

Примечание Доступно только в Windows 7 и более поздних версиях Windows.
 

icmpIdAndSequence

Идентификатор и последовательность ICMP.

Примечание Доступно только в Windows 7 и более поздних версиях Windows.
 

localRedirectTargetPID

PiD процесса, отвечающего за перенаправленное подключение.

Примечание Доступно только в Windows 7 и более поздних версиях Windows.
 

originalDestination

Исходное назначение перенаправленного подключения.

Примечание Доступно только в Windows 7 и более поздних версиях Windows.
 

redirectRecords

Дескриптор записей перенаправления, который можно передать функции FwpsQueryConnectionRedirectState0 для получения состояния перенаправления.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

currentL2MetadataValues

Битовая маска, содержащая флаги, указывающие, какие значения уровня 2 заданы. Одно или несколько значений можно комбинировать с побитовой ИЛИ.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 
Значение Значение
FWPS_L2_METADATA_FIELD_ETHERNET_MAC_HEADER_SIZE
Значение элемента ethernetMacHeaderSize указывает размер заголовка MAC.
FWPS_L2_METADATA_FIELD_WIFI_OPERATION_MODE
Значение элемента wiFiOperationMode указывает текущий режим работы native 802.11.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_PORT_ID
Значение члена vSwitchSourcePortId указывает идентификатор исходного порта на виртуальном коммутаторе.
FWPS_L2_METADATA_FIELD_VSWITCH_SOURCE_NIC_INDEX
Значение элемента vSwitchSourceNicIndex указывает индекс исходного сетевого адаптера на виртуальном коммутаторе.
FWPS_L2_METADATA_FIELD_VSWITCH_PACKET_CONTEXT
Значение элемента vSwitchPacketContext указывает handle для контекста пакета виртуального коммутатора.
FWPS_L2_METADATA_FIELD_VSWITCH_DESTINATION_PORT_ID
Значение члена vSwitchDestinationPortId указывает идентификатор порта назначения на виртуальном коммутаторе.

l2Flags

Битовая маска, содержащая флаги уровня 2, которые можно объединить с побитовой или.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 
Значение Значение
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV4_FRAMING
Указывает необработанное обрамления IP4.
FWPS_L2_INCOMING_FLAG_IS_RAW_IPV6_FRAMING
Указывает необработанное обрамления IP6.
FWPS_L2_INCOMING_FLAG_RECLASSIFY_MULTI_DESTINATION
Этот флаг указывает, что NBL, который был замечен один раз при входе, был распределен по нескольким NBL, каждый из которых предназначен для другой виртуальной машины, и первый NBL этого дистрибутива уже указан для вашего драйвера выноски.

Первый NBL распределенной группы не будет иметь этот флаг. Для всех последующих NBL для группы будет установлен этот флаг.

Для внедрения драйвер выноски должен клонировать NBL, заблокировать и поглотить исходный пакет, а также очистить флаг FWPS_RIGHT_ACTION_WRITE для первого указания. Затем измените клон и вставьте его в путь входящего трафика.

Для всех последующих указаний следует заблокировать и поглотить исходный пакет и очистить флаг FWPS_RIGHT_ACTION_WRITE для клона. Когда внедренный клон выходит из входящего трафика, он будет повторно перераспределен, и все признаки будут иметь состояние инъекции FWPS_PACKET_INJECTED_BY_SELF или FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

ethernetMacHeaderSize

Размер (в байтах) заголовка MAC, если установлен флаг FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE. Этот флаг установлен только для входящего слоя 802.3.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

wiFiOperationMode

Текущий режим работы native 802.11, если установлен флаг FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE. Дополнительные сведения см. в разделе DOT11_CURRENT_OPERATION_MODE.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

vSwitchSourcePortId

Уникальный идентификатор порта источника на виртуальном коммутаторе.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

vSwitchSourceNicIndex

Индекс исходного сетевого адаптера на виртуальном коммутаторе.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

vSwitchDestinationPortId

Уникальный идентификатор порта назначения на виртуальном коммутаторе.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

padding0

Зарезервировано.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

padding1

Зарезервировано.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

padding2

Зарезервировано.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

vSwitchPacketContext

Дескриптор контекста пакета виртуального коммутатора.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

subProcessTag

Зарезервировано.

Примечание Доступно только в Windows 8 и более поздних версиях Windows.
 

reserved1

Комментарии

Обработчик фильтров передает указатель на структуру FWPS_INCOMING_METADATA_VALUES0 в функцию выноски classifyFn . Значения метаданных, содержащиеся в структуре, не обрабатываются подсистемой фильтрации, а передаются в функцию выноски classifyFn выноски для предоставления дополнительных сведений.

Драйвер выноски может использовать следующий макрос для проверки наличия определенного значения метаданных в структуре FWPS_INCOMING_METADATA_VALUES0:

FWPS_IS_METADATA_FIELD_PRESENT(metadataValues, metadataField)

Если значение метаданных FWPS_METADATA_FIELD_PACKET_DIRECTION присутствует в структуре FWPS_INCOMING_METADATA_VALUES0, член packetDirection указывает, был ли пакет входящим или исходящим во время операции классификации повторной проверки подлинности. В противном случае значение метаданных FWPS_METADATA_FIELD_PACKET_DIRECTION отсутствует.

Драйвер выноски должен следовать этим рекомендациям при проверке пакета:

  • На уровнях подключения или получения и принятия ALE драйвер выноски не должен предполагать, что пакет содержит допустимый IP-заголовок, если для packetDirection задано значение FWP_DIRECTION_OUTBOUND и присутствует значение метаданных FWPS_METADATA_FIELD_PACKET_DIRECTION.
  • Если на уровне подключения ALE значение метаданных FWPS_METADATA_FIELD_PACKET_DIRECTION отсутствует, драйвер выноски должен предполагать направление пакета FWP_DIRECTION_OUTBOUND.
  • Если на уровне приема и принятия ALE значение метаданных FWPS_METADATA_FIELD_PACKET_DIRECTION отсутствует, драйвер выноски должен предполагать направление пакета FWP_DIRECTION_INBOUND.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Верхняя часть fwpsk.h (включая Fwpsk.h)

См. также раздел

CMSGHDR

FWPS_DISCARD_METADATA0

FWPS_INBOUND_FRAGMENT_METADATA0

FWP_BYTE_BLOB

FWP_DIRECTION

FwpsQueryConnectionRedirectState0

NET_BUFFER_LIST

classifyFn