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
구조체에 설정된 메타데이터 값을 지정하는 메타데이터 필드 식별자 조합의 비트 OR을 포함하는 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 가 0보다 큰 경우 데이터 오프셋 위치에서 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
엔드포인트를 소유하는 프로세스의 프로세스 ID입니다. 이 멤버는 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
아웃바운드 전송 계층 삽입에 사용할 원격 scope 식별자입니다. 이 멤버는 FWPS_METADATA_FIELD_REMOTE_SCOPE_ID 플래그가 currentMetadataValues 멤버에 설정된 경우에만 유효한 데이터를 포함합니다.
controlData
선택적 소켓 컨트롤 데이터 개체입니다. 이 멤버는 FWPS_METADATA_FIELD_TRANSPORT_CONTROL_DATA 플래그가 currentMetadataValues 멤버에 설정된 경우에만 유효한 데이터를 포함합니다. WSACMSGHDR 형식에 대한 자세한 내용은 CMSGHDR을 참조하세요.
controlDataLength
controlData 멤버의 길이(바이트)입니다.
packetDirection
의 상수 값 중 하나에 지정된 네트워크 트래픽의 방향(인바운드 또는 아웃바운드)
FWP_DIRECTION. 이 멤버는 재인증 분류 작업 중에 ALE(애플리케이션 계층 적용) 연결 또는 수신/수락 계층에서 설정됩니다. 자세한 내용은 주의 섹션을 참조하세요.
headerIncludeHeader
패킷이 원시 소켓에서 전송되는 경우 IP 헤더에 대한 포인터입니다.
headerIncludeHeaderLength
headerIncludeHeader가 가리키는 IP 헤더의 길이(바이트)입니다.
destinationPrefix
대상 접두사입니다.
frameLength
프레임 길이입니다.
parentEndpointHandle
엔드포인트의 부모 핸들입니다.
icmpIdAndSequence
ICMP 식별자 및 시퀀스입니다.
localRedirectTargetPID
리디렉션된 연결을 담당하는 프로세스의 PID입니다.
originalDestination
리디렉션된 연결의 원래 대상입니다.
redirectRecords
리디렉션 상태를 가져오기 위해 FwpsQueryConnectionRedirectState0 함수에 전달할 수 있는 리디렉션 레코드 핸들입니다.
currentL2MetadataValues
설정된 계층 2 값을 지정하는 플래그가 포함된 비트 마스크입니다. 하나 이상의 값을 비트 OR과 결합할 수 있습니다.
l2Flags
비트 OR와 결합할 수 있는 계층 2 플래그를 포함하는 비트 마스크입니다.
ethernetMacHeaderSize
FWPS_L2_METADATA_FIELD_802_3_MAC_HEADER_SIZE 플래그가 설정된 경우 MAC 헤더의 크기(바이트)입니다. 이 플래그는 인바운드 802.3 계층에 대해서만 설정됩니다.
wiFiOperationMode
FWPS_L2_METADATA_FIELD_802_11_OPERATION_MODE 플래그가 설정된 경우 현재 Native 802.11 작업 모드입니다. 자세한 내용은 DOT11_CURRENT_OPERATION_MODE.
vSwitchSourcePortId
가상 스위치의 원본 포트에 대한 고유 식별자입니다.
vSwitchSourceNicIndex
가상 스위치의 원본 NIC에 대한 인덱스입니다.
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 연결 또는 수신/수락 계층에서 설명선 드라이버는 packetDirection 이 FWP_DIRECTION_OUTBOUND 설정되고 FWPS_METADATA_FIELD_PACKET_DIRECTION 메타데이터 값이 있는 경우 패킷에 유효한 IP 헤더가 포함되어 있다고 가정해서는 안 됩니다.
- 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 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기