NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체(ntddndis.h)
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체는 네트워크 패킷 헤더의 필드에 대한 필터 테스트 조건을 지정합니다.
NDIS 수신 필터는 다음 NDIS 인터페이스에서 사용됩니다.
-
NDIS 패킷 병합. 이 인터페이스에서 수신 필터를 사용하는 방법에 대한 자세한 내용은 패킷 병합 수신 필터 관리를 참조하세요.
-
SR-IOV(단일 루트 I/O 가상화). 이 인터페이스에서 수신 필터를 사용하는 방법에 대한 자세한 내용은 가상 포트에서 수신 필터 설정을 참조하세요.
-
VMQ(Virtual Machine Queue). 이 인터페이스에서 수신 필터를 사용하는 방법에 대한 자세한 내용은 VMQ 필터 설정 및 지우기를 참조하세요.
구문
typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_FRAME_HEADER FrameHeader;
NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
union {
NDIS_MAC_HEADER_FIELD MacHeaderField;
NDIS_ARP_HEADER_FIELD ArpHeaderField;
NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
NDIS_UDP_HEADER_FIELD UdpHeaderField;
} HeaderField;
_HEADER_FIELD _HEADER_FIELD;
union {
UCHAR FieldByteValue;
USHORT FieldShortValue;
ULONG FieldLongValue;
ULONG64 FieldLong64Value;
UCHAR FieldByteArrayValue[16];
} FieldValue;
_FIELD_VALUE _FIELD_VALUE;
union {
UCHAR ResultByteValue;
USHORT ResultShortValue;
ULONG ResultLongValue;
ULONG64 ResultLong64Value;
UCHAR ResultByteArrayValue[16];
} ResultValue;
_RESULT_VALUE _RESULT_VALUE;
} NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
멤버
Header
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체의 NDIS_OBJECT_HEADER 구조체입니다. 드라이버는 Header가 지정하는 구조체의 Type 멤버를 NDIS_OBJECT_TYPE_DEFAULT 설정합니다.
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체의 버전을 나타내기 위해 드라이버는 Revision 멤버를 다음 값 중 하나로 설정합니다.
Flags
플래그의 비트 OR입니다. 다음 플래그는 에 대해 유효합니다. OID_RECEIVE_FILTER_SET_FILTER Oid.
값 | 의미 |
---|---|
|
이 플래그가 설정된 경우 네트워크 어댑터는 다음 조건을 통과하는 수신된 패킷만 표시해야 합니다.
참고 오버리싱 드라이버가 OID 요청이 OID_RECEIVE_FILTER_SET_FILTER MAC 주소 필터 및 VLAN 식별자 필터를 설정하는 경우 필터 필드 중 하나에서 이 플래그를 설정하지 않습니다. 이 경우 미니포트 드라이버는 지정된 MAC 주소와 VLAN 식별자와 일치하는 패킷을 나타내야 합니다. 즉, 미니포트 드라이버는 VLAN 식별자가 없거나 태그가 지정되지 않은 MAC 주소가 일치하는 패킷을 나타내면 안 됩니다.
|
FrameHeader
네트워크 데이터 프레임의 헤더 형식입니다.
ReceiveFilterTest
수신 필터에 대해 수행할 테스트 유형입니다.
HeaderField
헤더의 필드 형식입니다. 필드 형식(예: NDIS_MAC_HEADER_FIELD)은 FrameHeader 멤버에 지정된 헤더 형식에 해당합니다.
이 공용 구조체에는 다음 멤버가 포함됩니다.
HeaderField.MacHeaderField
MAC 헤더의 필드 형식입니다.
HeaderField.ArpHeaderField
ARP(주소 확인 프로토콜) 헤더의 필드 형식입니다.
HeaderField.IPv4HeaderField
IP 버전 4(IPv4) 헤더의 필드 형식을 지정하는 NDIS_IPV4_HEADER_FIELD 열거 형 값입니다.
HeaderField.IPv6HeaderField
IP 버전 6(IPv6) 헤더의 필드 형식을 지정하는 NDIS_IPV6_HEADER_FIELD 열거 형 값입니다.
HeaderField.UdpHeaderField
UDP(사용자 데이터그램 프로토콜) 헤더의 필드 형식입니다.
_HEADER_FIELD
FieldValue
미니포트 어댑터가 들어오는 패킷의 해당 헤더 필드 값과 비교하는 값입니다. 헤더 필드 값의 위치는 HeaderField 멤버에 지정된 필드 형식에 따라 결정됩니다.
자세한 내용은 주의 섹션을 참조하세요.
이 공용 구조체에는 다음 멤버가 포함됩니다.
FieldValue.FieldByteValue
네트워크 패킷의 필드와 비교할 UCHAR 값입니다.
FieldValue.FieldShortValue
네트워크 패킷의 필드와 비교할 USHORT 값입니다.
FieldValue.FieldLongValue
네트워크 패킷의 필드와 비교할 ULONG 값입니다.
FieldValue.FieldLong64Value
네트워크 패킷의 필드와 비교할 ULONG64 값입니다.
FieldValue.FieldByteArrayValue[16]
네트워크 패킷의 필드와 비교할 UCHAR 배열입니다.
_FIELD_VALUE
ResultValue
테스트 결과 값이 포함된 공용 구조체입니다.
ReceiveFilterTest 멤버가 NdisReceiveFilterTestMaskEqual로 설정된 경우 네트워크 어댑터는 먼저 FieldValue 멤버의 값과 HeaderField 멤버가 지정한 헤더 필드 값의 결과를 계산합니다. 그런 다음, 어댑터는 계산된 결과를 ResultValue와 비교합니다.
자세한 내용은 주의 섹션을 참조하세요.
이 공용 구조체에는 다음 멤버가 포함됩니다.
ResultValue.ResultByteValue
테스트 결과와 비교할 UCHAR 값입니다.
ResultValue.ResultShortValue
테스트 결과와 비교할 USHORT 값입니다.
ResultValue.ResultLongValue
테스트 결과와 비교할 ULONG 값입니다.
ResultValue.ResultLong64Value
테스트 결과와 비교할 ULONG64 값입니다.
ResultValue.ResultByteArrayValue[16]
테스트 결과와 비교할 UCHAR 배열입니다.
_RESULT_VALUE
설명
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체는 를 사용하여 지정할 수 있는 가능한 필드 테스트 배열의 한 필드에 대한 필터 테스트 조건을 지정합니다. NDIS_RECEIVE_FILTER_PARAMETERS 구조체입니다.
다음 표에서는 네트워크 어댑터가 ReceiveFilterTest, FieldValue 및 ResultValue 멤버를 사용하여 수신된 패킷의 지정된 헤더 필드 값에 대한 필터 테스트를 수행하는 방법을 설명합니다.
ReceiveFilterTest 값 | 네트워크 어댑터에서 수행하는 필터 테스트 |
---|---|
NdisReceiveFilterTestEqual | (<헤더 필드 값> == FieldValue) |
NdisReceiveFilterTestMaskEqual | ((<헤더 필드 값> & FieldValue) == ResultValue) |
NdisReceiveFilterTestNotEqual | (<헤더 필드 값> != FieldValue) |
- NDIS 6.20의 경우 미니포트 드라이버는 OID_RECEIVE_FILTER_SET_FILTER OID 요청에 실패한 상태 반환해야 합니다.
-
NDIS 6.30부터 NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO 플래그가 설정되지 않고 OID_RECEIVE_FILTER_SET_FILTER 메서드 요청으로 구성된 VLAN 식별자 필터가 없는 경우 미니포트 드라이버는 다음 중 하나를 수행해야 합니다.
- 미니포트 드라이버는 OID_RECEIVE_FILTER_SET_FILTER 메서드 요청에 대해 실패한 상태 반환해야 합니다.
- 미니포트 드라이버는 지정된 MAC 주소 필드를 검사하고 필터링하도록 네트워크 어댑터를 구성해야 합니다. VLAN 태그가 수신된 패킷에 있는 경우 네트워크 어댑터는 패킷 데이터에서 제거해야 합니다. 미니포트 드라이버는 패킷의 NET_BUFFER_LIST 구조와 연결된 NDIS_NET_BUFFER_LIST_8021Q_INFO VLAN 태그를 배치해야 합니다.
-
미니포트 드라이버는 지정된 MAC 주소 및 VLAN 식별자 필드를 검사하고 필터링하도록 네트워크 어댑터를 구성해야 합니다.
VLAN 태그가 수신된 패킷에 있는 경우 네트워크 어댑터는 패킷 데이터에서 제거해야 합니다. 미니포트 드라이버는 패킷의 NET_BUFFER_LIST 구조와 연결된 NDIS_NET_BUFFER_LIST_8021Q_INFO VLAN 태그를 배치해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.20 이상에서 지원됩니다. |
머리글 | ntddndis.h(Ndis.h 포함) |
추가 정보
NDIS_RECEIVE_FILTER_PARAMETERS피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기