структура FWPS_INCOMING_METADATA_VALUES0 (fwpsu.h)
Определяет значения метаданных, которые обработчик фильтров передает функции выноски classifyFn выноски.
Примечание
FWPS_INCOMING_METADATA_VALUES0 — это определенная версия FWPS_INCOMING_METADATA_VALUES. Дополнительные сведения см. в разделах Имена, не зависящие от версий, а также в статье о конкретных версиях 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;
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
Идентификатор идентификатора процесса, отвечающего за перенаправленное подключение.
Доступно только в 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.
vSwitchPacketContext
Дескриптор контекста пакета виртуального коммутатора.
Доступно только в Windows 8 и более поздних версиях Windows.
subProcessTag
Зарезервировано.
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.
Требования
Требование | Значение |
---|---|
Заголовок | fwpsu.h |