PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS fungsi panggilan balik (ndis.h)
Proses fungsi ProtocolCoReceiveNetBufferLists menerima indikasi dari driver yang mendasar.
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 NdisMCoIndicateReceiveNetBufferListsSaran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk