PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS fungsi panggilan balik (ndis.h)

Proses fungsi ProtocolCoReceiveNetBufferLists menerima indikasi dari driver yang mendasar.

Catatan Anda harus mendeklarasikan fungsi dengan menggunakan jenis PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS . Untuk informasi selengkapnya, lihat bagian Contoh berikut ini.
 

Sintaks

PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS ProtocolCoReceiveNetBufferLists;

void ProtocolCoReceiveNetBufferLists(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG NumberOfNetBufferLists,
  [in] ULONG ReceiveFlags
)
{...}

Parameter

[in] ProtocolBindingContext

Handel ke area konteks yang dialokasikan driver protokol untuk mempertahankan informasi status untuk pengikatan. Handel ini diteruskan ke NDIS dalam panggilan sebelumnya ke NdisOpenAdapterEx.

[in] ProtocolVcContext

Handel ke area konteks yang dialokasikan driver protokol tempat driver ini mempertahankan informasi status run-time koneksi per virtual (VC). Klien atau manajer panggilan mandiri menyediakan handel ini baik ketika disebut fungsi NdisCoCreateVc atau dari fungsi ProtocolCoCreateVc-nya .

[in] NetBufferLists

Daftar tertaut struktur NET_BUFFER_LIST yang dialokasikan driver yang mendasar. Setiap struktur NET_BUFFER_LIST biasanya dikaitkan dengan satu struktur NET_BUFFER .

[in] NumberOfNetBufferLists

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

[in] ReceiveFlags

Bendera yang menentukan atribut untuk operasi pengiriman. Bendera dapat dikombinasikan dengan operasi OR bitwise. Untuk menghapus semua bendera, atur parameter ini ke nol. ProtocolCoReceiveNetBufferLists mendukung bendera berikut:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

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

NDIS_RECEIVE_FLAGS_RESOURCES

NDIS merebut kembali kepemilikan struktur NET_BUFFER_LIST dan struktur NET_BUFFER yang terlampir segera setelah panggilan ke ProtocolCoReceiveNetBufferLists kembali.

Mengembalikan nilai

Tidak ada

Keterangan

Fungsi ProtocolCoReceiveNetBufferLists diperlukan untuk driver protokol CoNDIS. NDIS memanggil ProtocolCoReceiveNetBufferLists setelah driver miniport terikat memanggil Fungsi NdisMCoIndicateReceiveNetBufferLists . Panggilan ke ProtocolCoReceiveNetBufferLists juga dapat terjadi sebagai akibat dari loopback.

Jika bendera NDIS_RECEIVE_FLAGS_RESOURCES dalam parameter CoReceiveFlags tidak diatur, driver protokol mempertahankan kepemilikan struktur NET_BUFFER_LIST sampai memanggil Fungsi NdisReturnNetBufferLists . Jika NDIS menetapkan bendera NDIS_RECEIVE_FLAGS_RESOURCES , driver protokol tidak dapat mempertahankan struktur NET_BUFFER_LIST dan sumber daya terkait. NDIS_RECEIVE_FLAGS_RESOURCES menunjukkan bahwa driver yang mendasar memiliki sumber daya penerima yang rendah. Dalam hal ini, fungsi ProtocolCoReceiveNetBufferLists harus menyalin data yang diterima ke penyimpanan yang dialokasikan protokol dan kembali secepat mungkin.

Pada sistem multiprosesor, ProtocolCoReceiveNetBufferLists dapat berjalan bersamaan pada lebih dari satu prosesor. Dalam situasi ini, terapkan perlindungan (misalnya, gunakan kunci putar) ke struktur data penting yang diakses ProtocolCoReceiveNetBufferLists .

NDIS memanggil ProtocolCoReceiveNetBufferLists di IRQL<= DISPATCH_LEVEL.

Contoh

Untuk menentukan fungsi ProtocolCoReceiveNetBufferLists , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi untuk pengandar. Mendeklarasikan fungsi menggunakan jenis fungsi membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.

Misalnya, untuk menentukan fungsi ProtocolCoReceiveNetBufferLists yang diberi nama "MyCoReceiveNetBufferLists", gunakan jenis PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS seperti yang ditunjukkan dalam contoh kode ini:

PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS MyCoReceiveNetBufferLists;

Kemudian, terapkan fungsi Anda sebagai berikut:

_Use_decl_annotations_
VOID
 MyCoReceiveNetBufferLists(
    NDIS_HANDLE  ProtocolBindingContext,
    NDIS_HANDLE  ProtocolVcContext,
    INPNET_BUFFER_LIST  NetBufferLists,
    ULONG  NumberOfNetBufferLists,
    ULONG  ReceiveFlags
    )
  {...}

Jenis fungsi PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS ditentukan dalam file header Ndis.h. Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver NDIS.

Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung di NDIS 6.0 dan yang lebih baru.
Target Platform Windows
Header ndis.h (termasuk Ndis.h)
IRQL <= DISPATCH_LEVEL

Lihat juga

Driver Protokol CoNDIS Kirim dan Terima Fungsi

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NdisCoCreateVc

NdisMCoIndicateReceiveNetBufferLists

NdisOpenAdapterEx

NdisReturnNetBufferLists

ProtocolCoCreateVc

ProtocolCoSendNetBufferListsComplete