Fungsi NdisFIndicateReceiveNetBufferLists (ndis.h)

Driver filter memanggil NdisFIndicateReceiveNetBufferLists untuk menunjukkan bahwa ia telah menerima data jaringan. Untuk informasi selengkapnya, lihat Menerima Data di Driver Filter.

Sintaks

void NdisFIndicateReceiveNetBufferLists(
  [in] NDIS_HANDLE      NdisFilterHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER PortNumber,
  [in] ULONG            NumberOfNetBufferLists,
  [in] ULONG            ReceiveFlags
);

Parameter

[in] NdisFilterHandle

Handel NDIS yang mengidentifikasi modul filter ini. NDIS meneruskan handel ke driver filter dalam panggilan ke fungsi FilterAttach .

[in] NetBufferLists

Daftar tertaut struktur NET_BUFFER_LIST . Setiap struktur NET_BUFFER_LIST berisi satu struktur NET_BUFFER .

[in] PortNumber

Nomor port yang mengidentifikasi port adaptor miniport. Nomor port adaptor miniport ditetapkan dengan memanggil fungsi NdisMAllocatePort . Nilai nol mengidentifikasi port default adaptor miniport.

[in] NumberOfNetBufferLists

Jumlah struktur NET_BUFFER_LIST yang ada dalam daftar struktur tertaut di NetBufferLists .

[in] ReceiveFlags

Bendera yang menentukan atribut untuk indikasi terima. Bendera dapat dikombinasikan dengan operasi OR. Untuk menghapus semua bendera, atur anggota ini ke nol. Fungsi ini mendukung bendera berikut:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

Menentukan bahwa IRQL saat ini DISPATCH_LEVEL. Untuk informasi selengkapnya tentang bendera ini, lihat Pengiriman Pelacakan IRQL.

NDIS_RECEIVE_FLAGS_RESOURCES

Menentukan bahwa driver filter merebut kembali kepemilikan struktur NET_BUFFER_LIST dan struktur NET_BUFFER yang terlampir segera setelah panggilan ke NdisFIndicateReceiveNetBufferLists kembali.

NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE

Menentukan bahwa semua struktur NET_BUFFER_LIST dalam daftar di NetBufferLists memiliki jenis protokol yang sama (EtherType).

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

Menentukan bahwa semua struktur NET_BUFFER_LIST dalam daftar di NetBufferLists termasuk dalam VLAN yang sama.

NDIS_RECEIVE_FLAGS_PERFECT_FILTERED

Menentukan bahwa semua struktur NET_BUFFER_LIST dalam daftar di NetBufferLists hanya menyertakan data yang cocok dengan filter paket dan daftar alamat multicast yang ditetapkan ke adaptor miniport.

NDIS_RECEIVE_FLAGS_SINGLE_QUEUE

Menentukan bahwa semua struktur NET_BUFFER_LIST dalam daftar di NetBufferLists termasuk dalam antrean VM yang sama. Driver miniport harus mengatur bendera ini untuk semua indikasi penerima pada antrean jika bendera NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION diatur di anggota Bendera NDIS_RECEIVE_QUEUE_PARAMETERS struktur ketika antrean tersebut dialokasikan.

NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID

Menentukan bahwa semua struktur NET_BUFFER_LIST dalam daftar di NetBufferLists berisi informasi memori bersama yang valid. Ketika bendera ini diatur pada NET_BUFFER_LIST yang diterima, NDIS memperlakukan informasi memori bersama sebagai valid. Ketika bendera ini tidak diatur, NDIS dan driver mengabaikan informasi memori bersama. Misalnya, driver perantara yang memodifikasi data paket dapat menggunakan bendera ini untuk menentukan apakah data harus disalin. Driver miniport dapat menggunakan bendera untuk menentukan cara membebaskan memori yang terkait dengan antrean VM saat antrean dihapus.

NDIS_RECEIVE_FLAGS_MORE_NBLS

Dicadangkan.

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE

Jika bendera ini diatur, semua paket dalam daftar tertaut struktur NET_BUFFER_LIST berasal dari port sumber sakelar hyper-V yang dapat diperluas yang sama.

Untuk informasi selengkapnya, lihat Bendera Kirim dan Terima Sakelar Yang Dapat Diperluas Hyper-V.

Catatan Jika setiap paket dalam daftar tertaut struktur NET_BUFFER_LIST menggunakan port sumber yang sama, ekstensi harus mengatur bendera NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE dalam parameter ReturnFlagsfilterReturnNetBufferLists saat permintaan penerima selesai. Ekstensi harus mengatur bendera ini dalam parameter ReturnFlags jika memanggil NdisFReturnNetBufferLists untuk mengembalikan paket yang tidak berasal atau kloning.
 

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP

Jika bendera ini diatur, semua paket dalam daftar tertaut struktur NET_BUFFER_LIST akan diteruskan ke port tujuan switch yang dapat diperluas yang sama.

Untuk informasi selengkapnya, lihat Bendera Kirim dan Terima Sakelar Yang Dapat Diperluas Hyper-V.

Mengembalikan nilai

Tidak ada

Keterangan

Saat driver filter memanggil fungsi NdisFIndicateReceiveNetBufferLists , driver filter menentukan daftar struktur NET_BUFFER_LIST dalam parameter NetBufferLists . NDIS meneruskan struktur NET_BUFFER_LIST ke driver yang terlalu berlebihan.

Driver filter dapat memanggil NdisFIndicateReceiveNetBufferLists untuk memulai indikasi terima.

Driver filter juga dapat memfilter indikasi terima yang berasal dari driver yang mendasar. NDIS memanggil FilterReceiveNetBufferLists berfungsi untuk memfilter indikasi terima tersebut.

Driver filter harus mengatur anggota SourceHandle dari setiap struktur NET_BUFFER_LIST yang berasal dari nilai yang sama dengan parameter NdisFilterHandle . Driver filter tidak boleh mengubah anggota SourceHandle dalam struktur NET_BUFFER_LIST apa pun yang tidak berasal.

Driver filter harus menginisialisasi struktur NET_BUFFER_LIST dengan benar, struktur NET_BUFFER terpasang, dan MDL yang terpasang.

Jika driver filter memanggil fungsi NdisFIndicateReceiveNetBufferLists dan menghapus bendera NDIS_RECEIVE_FLAG_RESOURCES dalam parameter ReceiveFlags , NDIS mengembalikan struktur NET_BUFFER_LIST yang ditunjukkan ke driver filter Fungsi FilterReturnNetBufferLists . Dalam hal ini, driver filter tidak boleh mengklaim kembali struktur NET_BUFFER_LIST sampai NDIS mengembalikan struktur NET_BUFFER_LIST ke FilterReturnNetBufferLists.

Jika driver filter memanggil NdisFIndicateReceiveNetBufferLists dan mengatur bendera NDIS_RECEIVE_FLAG_RESOURCES dalam parameter ReceiveFlags , ini menunjukkan bahwa driver filter harus segera mendapatkan kembali kepemilikan struktur NET_BUFFER_LIST . Dalam hal ini, NDIS tidak memanggil fungsi FilterReturnNetBufferLists driver filter untuk mengembalikan struktur NET_BUFFER_LIST . Sebaliknya, NDIS mengembalikan struktur NET_BUFFER_LIST ke driver filter saat kembali dari NdisFIndicateReceiveNetBufferLists. Driver filter harus mengklaim kembali struktur NET_BUFFER_LIST segera setelah NdisFIndicateReceiveNetBufferLists kembali. Untuk mengklaim kembali struktur NET_BUFFER_LIST , driver filter dapat memanggil fungsi FilterReturnNetBufferLists sendiri.

Mengatur bendera NDIS_RECEIVE_FLAG_RESOURCES dalam parameter ReceiveFlags memaksa driver yang terlalu berlebihan untuk menyalin data jaringan dan melepaskan struktur NET_BUFFER_LIST ke driver filter.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Target Platform Desktop
Header ndis.h (termasuk Ndis.h)
Pustaka Ndis.lib
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI Irql_Filter_Driver_Function(ndis)

Lihat juga

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

Menerima Data dalam Driver Filter