структура FWPS_INCOMING_METADATA_VALUES0 (fwpsk.h)
Структура FWPS_INCOMING_METADATA_VALUES0 определяет значения метаданных, которые подсистема фильтров передает функции выноски classifyFn выноски.
Синтаксис
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. Этот элемент задается на уровнях подключения или получения и принятия во время операции классификации повторной проверки подлинности. Дополнительные сведения см. в разделе «Примечания».
headerIncludeHeader
Указатель на заголовок IP, если пакет отправляется из необработанного сокета.
headerIncludeHeaderLength
Длина (в байтах) ip-заголовка, на который указывает headerIncludeHeader.
destinationPrefix
Префикс назначения.
frameLength
Длина кадра.
parentEndpointHandle
Дескриптор родительского объекта конечной точки.
icmpIdAndSequence
Идентификатор и последовательность ICMP.
localRedirectTargetPID
PiD процесса, отвечающего за перенаправленное подключение.
originalDestination
Исходное назначение перенаправленного подключения.
redirectRecords
Дескриптор записей перенаправления, который можно передать функции FwpsQueryConnectionRedirectState0 для получения состояния перенаправления.
currentL2MetadataValues
Битовая маска, содержащая флаги, указывающие, какие значения уровня 2 заданы. Одно или несколько значений можно комбинировать с побитовой ИЛИ.
l2Flags
Битовая маска, содержащая флаги уровня 2, которые можно объединить с побитовой или.
ethernetMacHeaderSize
Размер (в байтах) заголовка MAC, если установлен флаг FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE. Этот флаг установлен только для входящего слоя 802.3.
wiFiOperationMode
Текущий режим работы native 802.11, если установлен флаг FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE. Дополнительные сведения см. в разделе DOT11_CURRENT_OPERATION_MODE.
vSwitchSourcePortId
Уникальный идентификатор порта источника на виртуальном коммутаторе.
vSwitchSourceNicIndex
Индекс исходного сетевого адаптера на виртуальном коммутаторе.
vSwitchDestinationPortId
Уникальный идентификатор порта назначения на виртуальном коммутаторе.
padding0
Зарезервировано.
padding1
Зарезервировано.
padding2
Зарезервировано.
vSwitchPacketContext
Дескриптор контекста пакета виртуального коммутатора.
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.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows Vista. |
Верхняя часть | fwpsk.h (включая Fwpsk.h) |
См. также раздел
FWPS_INBOUND_FRAGMENT_METADATA0Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по