struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS (ntddndis.h)

Struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS menentukan kriteria pengujian filter untuk bidang di header paket jaringan.

Filter penerimaan NDIS digunakan dalam antarmuka NDIS berikut:

Sintaks

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;

Anggota

Header

Struktur NDIS_OBJECT_HEADER untuk struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS . Driver mengatur anggota Jenis struktur yang ditentukan Header untuk NDIS_OBJECT_TYPE_DEFAULT.

Untuk menunjukkan versi struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS , driver mengatur anggota Revisi ke salah satu nilai berikut:

Nilai Makna
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2
2
Menambahkan anggota tambahan ke serikat headerField untuk NDIS 6.30.

Driver mengatur anggota Ukuran ke NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2.

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1
1
Versi asli untuk NDIS 6.20.

Driver mengatur anggota Ukuran ke NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1.

Flags

Bitwise ATAU bendera. Bendera berikut ini valid untuk OID_RECEIVE_FILTER_SET_FILTER OID.

Nilai Makna
NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO
0x00000001
Jika bendera ini diatur, adaptor jaringan hanya boleh menunjukkan paket yang diterima yang melewati kriteria berikut:
  • Alamat kontrol akses media (MAC) paket cocok dengan pengujian bidang header MAC yang ditentukan.
  • Paket tidak berisi tag VLAN atau memiliki tag VLAN dengan ID nol.
Untuk informasi selengkapnya tentang bendera ini, lihat bagian Keterangan.
Catatan Jika driver yang terlalu berlebihan mengatur filter alamat MAC dan filter pengidentifikasi VLAN dengan permintaan OID OID_RECEIVE_FILTER_SET_FILTER, driver tersebut tidak mengatur bendera ini di salah satu bidang filter. Dalam hal ini, driver miniport harus menunjukkan paket yang cocok dengan alamat MAC yang ditentukan dan pengidentifikasi VLAN. Artinya, driver miniport tidak boleh menunjukkan paket dengan alamat MAC yang cocok yang memiliki pengidentifikasi VLAN nol atau paket yang tidak diberi tag.
 

FrameHeader

Jenis header dalam bingkai data jaringan.

ReceiveFilterTest

Jenis pengujian yang akan dilakukan untuk filter terima.

HeaderField

Jenis bidang dalam header. Jenis bidang (misalnya, NDIS_MAC_HEADER_FIELD) sesuai dengan jenis header yang ditentukan dalam anggota FrameHeader .

Serikat ini berisi anggota berikut:

HeaderField.MacHeaderField

Jenis bidang di header MAC.

HeaderField.ArpHeaderField

Jenis bidang dalam header Protokol Resolusi Alamat (ARP).

HeaderField.IPv4HeaderField

Nilai enumerasi NDIS_IPV4_HEADER_FIELD yang menentukan jenis bidang dalam header IP versi 4 (IPv4).

HeaderField.IPv6HeaderField

Nilai enumerasi NDIS_IPV6_HEADER_FIELD yang menentukan jenis bidang dalam header IP versi 6 (IPv6).

HeaderField.UdpHeaderField

Jenis bidang di header Protokol Datagram Pengguna (UDP).

_HEADER_FIELD

FieldValue

Nilai yang dibandingkan dengan adaptor miniport dengan nilai bidang header yang sesuai dalam paket masuk. Lokasi nilai bidang header ditentukan oleh jenis bidang yang ditentukan dalam anggota HeaderField .

Untuk informasi lebih lanjut, lihat bagian Keterangan.

Serikat ini berisi anggota berikut:

FieldValue.FieldByteValue

Nilai UCHAR untuk dibandingkan dengan bidang dalam paket jaringan.

Catatan Jika anggota MacHeaderField menentukan nilai enumerasi NdisMacHeaderFieldPacketType , anggota ini berisi nilai enumerasi NDIS_MAC_PACKET_TYPE .
 

FieldValue.FieldShortValue

Nilai USHORT untuk dibandingkan dengan bidang dalam paket jaringan.

FieldValue.FieldLongValue

Nilai ULONG untuk dibandingkan dengan bidang dalam paket jaringan.

FieldValue.FieldLong64Value

Nilai ULONG64 untuk dibandingkan dengan bidang dalam paket jaringan.

FieldValue.FieldByteArrayValue[16]

Array UCHAR untuk dibandingkan dengan bidang dalam paket jaringan.

_FIELD_VALUE

ResultValue

Serikat yang berisi nilai hasil pengujian.

Jika anggota ReceiveFilterTest diatur ke NdisReceiveFilterTestMaskEqual, adaptor jaringan terlebih dahulu menghitung hasil dari nilai di anggota FieldValue dan nilai bidang header seperti yang ditentukan oleh anggota HeaderField . Adaptor kemudian membandingkan hasil terhitung dengan ResultValue.

Untuk informasi lebih lanjut, lihat bagian Keterangan.

Serikat ini berisi anggota berikut:

ResultValue.ResultByteValue

Nilai UCHAR untuk dibandingkan dengan hasil pengujian.

ResultValue.ResultShortValue

Nilai USHORT untuk dibandingkan dengan hasil pengujian.

ResultValue.ResultLongValue

Nilai ULONG untuk dibandingkan dengan hasil pengujian.

ResultValue.ResultLong64Value

Nilai ULONG64 untuk dibandingkan dengan hasil pengujian.

ResultValue.ResultByteArrayValue[16]

Array UCHAR untuk dibandingkan dengan hasil pengujian.

_RESULT_VALUE

Keterangan

Struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS menentukan kriteria pengujian filter untuk satu bidang dalam array pengujian bidang yang mungkin dapat ditentukan dengan NDIS_RECEIVE_FILTER_PARAMETERS struktur.

Tabel berikut ini menjelaskan bagaimana adaptor jaringan menggunakan anggota ReceiveFilterTest, FieldValue, dan ResultValue untuk melakukan pengujian filter pada nilai bidang header yang ditentukan dari paket yang diterima.

Nilai ReceiveFilterTest Pengujian filter yang dilakukan oleh adaptor jaringan
NdisReceiveFilterTestEqual (<nilai bidang header> == FieldValue)
NdisReceiveFilterTestMaskEqual ((<nilai bidang header> & FieldValue) == ResultValue)
NdisReceiveFilterTestNotEqual (<nilai bidang header> != FieldValue)
 
Catatan Semua bidang multibyte dan nilai hasil, seperti anggota FieldShortValue dan ResultLong64Value , harus ditentukan dalam format urutan byte jaringan (big-endian).
 
Jika bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO tidak diatur dan tidak ada filter pengidentifikasi VLAN yang dikonfigurasi oleh permintaan set OID_RECEIVE_FILTER_SET_FILTER OID, driver miniport harus melakukan salah satu hal berikut:
  • Untuk NDIS 6.20, driver miniport harus mengembalikan status gagal untuk permintaan OID OID_RECEIVE_FILTER_SET_FILTER.
  • Dimulai dengan NDIS 6.30, jika bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO tidak diatur dan tidak ada filter pengidentifikasi VLAN yang dikonfigurasi oleh permintaan metode OID_RECEIVE_FILTER_SET_FILTER , driver miniport harus melakukan salah satu hal berikut:
    • Driver miniport harus mengembalikan status gagal untuk permintaan metode OID_RECEIVE_FILTER_SET_FILTER .
    • Driver miniport harus mengonfigurasi adaptor jaringan untuk memeriksa dan memfilter bidang alamat MAC yang ditentukan. Jika tag VLAN ada dalam paket yang diterima, adaptor jaringan harus menghapusnya dari data paket. Driver miniport harus menempatkan tag VLAN dalam NDIS_NET_BUFFER_LIST_8021Q_INFO yang terkait dengan struktur NET_BUFFER_LIST paket.
Dimulai dengan NDIS 6.30, jika bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO tidak diatur dan ada filter pengidentifikasi VLAN bukan nol yang dikonfigurasi oleh permintaan set OID_RECEIVE_FILTER_SET_FILTER OID, driver miniport harus melakukan hal berikut:
  • Driver miniport harus mengonfigurasi adaptor jaringan untuk memeriksa dan memfilter alamat MAC dan bidang pengidentifikasi VLAN yang ditentukan.

    Jika tag VLAN ada dalam paket yang diterima, adaptor jaringan harus menghapusnya dari data paket. Driver miniport harus menempatkan tag VLAN dalam NDIS_NET_BUFFER_LIST_8021Q_INFO yang terkait dengan struktur NET_BUFFER_LIST paket.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.20 dan yang lebih baru.
Header ntddndis.h (termasuk Ndis.h)

Lihat juga

NDIS_ARP_HEADER_FIELD

NDIS_FRAME_HEADER

NDIS_IPV4_HEADER_FIELD

NDIS_IPV6_HEADER_FIELD

NDIS_MAC_HEADER_FIELD

NDIS_MAC_PACKET_TYPE

NDIS_OBJECT_HEADER

NDIS_RECEIVE_FILTER_PARAMETERS

NDIS_RECEIVE_FILTER_TEST

NDIS_UDP_HEADER_FIELD

OID_RECEIVE_FILTER_SET_FILTER