NDIS_RECEIVE_FILTER_PARAMETERS 구조체(ntddndis.h)

NDIS_RECEIVE_FILTER_PARAMETERS 구조체는 NDIS 수신 필터에 대한 매개 변수를 지정합니다.

NDIS 수신 필터는 다음 NDIS 인터페이스에서 사용됩니다.

구문

typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
  NDIS_OBJECT_HEADER       Header;
  ULONG                    Flags;
  NDIS_RECEIVE_FILTER_TYPE FilterType;
  NDIS_RECEIVE_QUEUE_ID    QueueId;
  NDIS_RECEIVE_FILTER_ID   FilterId;
  ULONG                    FieldParametersArrayOffset;
  ULONG                    FieldParametersArrayNumElements;
  ULONG                    FieldParametersArrayElementSize;
  ULONG                    RequestedFilterIdBitCount;
  ULONG                    MaxCoalescingDelay;
  NDIS_NIC_SWITCH_VPORT_ID VPortId;
} NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;

멤버

Header

NDIS_RECEIVE_FILTER_PARAMETERS 구조체의 NDIS_OBJECT_HEADER 구조체입니다. 드라이버는 Header가 지정하는 구조체의 Type 멤버를 NDIS_OBJECT_TYPE_DEFAULT 설정합니다.

NDIS_RECEIVE_FILTER_PARAMETERS 구조체의 버전을 나타내기 위해 드라이버는 Revision 멤버를 다음 값 중 하나로 설정합니다.

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2

NDIS 6.30용 VPortIdMaxCoalescingDelay 멤버가 추가되었습니다.

드라이버는 Size 멤버를 NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2 설정합니다.

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1

NDIS 6.20의 원래 버전입니다.

드라이버는 Size 멤버를 NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1 설정합니다.

Flags

다음 플래그의 비트 OR입니다.

버전 의미
NDIS 6.50 이상 NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 이 플래그가 수신 필터에 설정된 경우 네트워크 어댑터는 캡슐화된 패킷의 내부 이더넷 프레임에 있는 이 MAC 주소와 일치해야 합니다.
NDIS 6.20~ NDIS 6.40 NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002 이 플래그가 수신 필터에 설정된 경우 네트워크 어댑터는 GRE 캡슐화된 패킷의 내부 이더넷 프레임에 있는 이 MAC 주소와 일치해야 합니다.

FilterType

수신 필터의 형식입니다.

QueueId

수신 큐 식별자입니다. 이 식별자는 0과 네트워크 어댑터가 지원하는 큐 수 사이의 정수입니다. NDIS_DEFAULT_RECEIVE_QUEUE_ID 값은 기본 수신 큐를 지정합니다.

참고NDIS 패킷 병합 또는 SR-IOV 인터페이스를 지원하는 미니포트 드라이버는 QueueId 멤버를 NDIS_DEFAULT_RECEIVE_QUEUE_ID 설정해야 합니다.
 

FilterId

수신 필터 식별자입니다. 필터 식별자는 네트워크 어댑터가 지원하는 수신 필터 수까지의 정수입니다. 값이 0이면 잘못되었습니다.

FieldParametersArrayOffset

이 구조체를 따르는 요소 배열의 첫 번째 요소에 대한 오프셋(바이트)입니다. 오프셋은 NDIS_RECEIVE_FILTER_PARAMETERS 구조체의 시작부터 첫 번째 요소의 시작까지 측정됩니다. 배열의 각 요소는 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체입니다.

참고FieldParametersArrayNumElements 가 0으로 설정된 경우 이 멤버는 무시됩니다.
 

FieldParametersArrayNumElements

배열의 요소 수입니다.

FieldParametersArrayElementSize

배열에서 각 요소의 크기(바이트)입니다.

RequestedFilterIdBitCount

필터 식별자의 비트 수입니다. 미니포트 드라이버는 NET_BUFFER_LIST 구조의 NetBufferListFilteringInfo OOB(out-of-band) 데이터의 필터 식별자에 대해 이 비트 수를 사용합니다. 이 멤버가 0인 경우 미니포트 드라이버는 OOB NetBufferListFilteringInfo 데이터에서 필터 식별자를 지정하지 않아야 합니다.

NDIS 6.20부터 이 멤버를 0으로 설정해야 합니다.

MaxCoalescingDelay

이 수신 필터와 일치하는 첫 번째 패킷이 네트워크 어댑터의 하드웨어 병합 버퍼 내에 저장되는 최대 시간(밀리초)입니다.

필터와 일치하는 첫 번째 패킷이 수신되는 즉시 네트워크 어댑터는 패킷을 병합합니다. 또한 어댑터는 만료 시간이 MaxCoalescingDelay 멤버의 값으로 설정된 하드웨어 타이머를 시작합니다. 동일한 필터와 일치하는 추가 패킷은 하드웨어 타이머를 다시 설정 및 다시 시작하지 않고 어댑터에서 병합해야 합니다.

하드웨어 타이머가 만료되면 어댑터는 수신 필터와 일치하는 병합된 패킷에 대해 호스트에 신호를 보낼 수신 인터럽트 를 생성해야 합니다.

참고NDIS 패킷 병합 을 지원하지 않는 미니포트 드라이버는 이 멤버를 무시해야 합니다.
 

VPortId

수신 필터를 구성할 VPort 식별자입니다. NDIS_DEFAULT_VPORT_ID 값은 네트워크 어댑터의 PCI Express(PCIe) PF(물리적 함수)에 연결된 기본 VPort를 지정합니다.

참고 이 멤버는 SR-IOV 인터페이스에만 유효합니다.
 

설명

NDIS_RECEIVE_FILTER_PARAMETERS 구조는 의 OID 요청과 함께 사용됩니다.
OID_RECEIVE_FILTER_PARAMETERS
OID_RECEIVE_FILTER_SET_FILTER. 이러한 OID 요청은 필터의 구성 매개 변수를 지정합니다. 필터 사양에는 네트워크 패킷의 여러 필드에 대한 테스트가 포함될 수 있습니다.

NDIS_RECEIVE_FILTER_PARAMETERS 구조체의 FieldParametersArrayOffset, FieldParametersArrayNumElementsFieldParametersArrayElementSize 멤버는 의 배열을 정의합니다. NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체. 배열의 각 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조체는 네트워크 헤더의 한 필드에 대한 필터 테스트 조건을 설정합니다.

네트워크 어댑터는 모든 필드 테스트의 결과를 논리적 AND 작업과 결합합니다. 즉, NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 구조 배열에 포함된 필드 테스트가 실패하면 네트워크 패킷이 지정된 필터 조건을 충족하지 않습니다.

네트워크 어댑터가 이러한 필터 조건에 대해 수신된 패킷을 테스트하는 경우 테스트 기준이 지정되지 않은 패킷의 모든 필드를 무시해야 합니다.

패킷이 필터 조건을 충족하는 경우 네트워크 어댑터는 다음 중 하나를 수행해야 합니다.

  • 네트워크 어댑터가 NDIS 수신 패킷 병합을 지원하는 경우 어댑터는 필터와 일치하는 패킷을 병합해야 합니다. 또한 어댑터는 동일하거나 다른 수신 필터와 일치하는 수신된 패킷을 병합해야 합니다. 어댑터는 다음과 같은 다른 하드웨어 이벤트가 발생할 때까지 수신 인터럽트 생성을 보류해야 합니다.
    • 만료 시간이 MaxCoalescingDelay 멤버의 값으로 설정된 하드웨어 타이머의 만료입니다.
    • 하드웨어 병합 버퍼 내에서 사용 가능한 공간은 어댑터별 낮은 워터 마크에 도달합니다.

    자세한 내용은 패킷 병합 수신 필터 처리를 참조하세요.

  • 네트워크 어댑터가 SR-IOV 인터페이스를 지원하는 경우 어댑터는 패킷을 기본 또는 비기본 VPort의 수신 큐로 전달해야 합니다. 수신 큐는 QueueId 멤버에 의해 지정되고 VPort는 VPortId 멤버에 의해 지정됩니다.
    참고 Windows Server 2012 SR-IOV 인터페이스는 기본 VPort와 기본이 아닌 VPort 모두에서 기본 수신 큐만 지원합니다. 기본 수신 큐는 QueueId 멤버를 NDIS_DEFAULT_RECEIVE_QUEUE_ID 설정하여 지정됩니다.
     
  • 네트워크 어댑터가 VMQ 인터페이스를 지원하는 경우 어댑터는 QueueId 멤버가 지정한 수신 큐에 패킷을 전달해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.20 이상에서 지원됩니다.
머리글 ntddndis.h(Ndis.h 포함)

추가 정보

NDIS_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER