NDIS_PD_POST_AND_DRAIN_BUFFER_LIST fungsi panggilan balik (ndis.h)
Platform PacketDirect (PD) memanggil fungsi PDPostAndDrainBufferList driver miniport berkemampuan PD untuk memposting struktur PD_BUFFER ke PD mengirimkan/menerima antrean dan menguras struktur PD_BUFFER yang telah diposting sebelumnya yang telah selesai.
Sintaks
NDIS_PD_POST_AND_DRAIN_BUFFER_LIST NdisPdPostAndDrainBufferList;
VOID() NdisPdPostAndDrainBufferList(
[in, out] NDIS_PD_QUEUE *Queue,
[in, out] PD_BUFFER **PostBufferListHead,
[in, out] PD_BUFFER ***DrainBufferListTail,
[in] ULONG MaxDrainCount
)
{...}
Parameter
[in, out] Queue
Penunjuk ke antrean transmisi atau terima yang akan menerima buffer yang diposting dan akan menghapus buffer yang telah selesai.
[in, out] PostBufferListHead
Kepala daftar pos. Penyedia menghapus buffer dalam daftar ini dan menambahkannya ke dalam Antrean.
[in, out] DrainBufferListTail
Ekor daftar pengurasan. Penyedia menghapus buffer yang telah selesai dari Antrean dan menambahkannya ke daftar ini.
[in] MaxDrainCount
Jumlah maksimum struktur PD_BUFFER untuk dikosongkan. Penyedia harus memastikan tidak melebihi jumlah ini. Satu set struktur PD_BUFFER parsial yang membentuk satu jumlah paket L2 adalah 1.
Nilai kembali
Fungsi panggilan balik ini tidak mengembalikan nilai.
Keterangan
Penyedia menghapus buffer dari PostBufferList dan menempatkannya ke dalam antrean, dimulai dengan buffer kepala dalam daftar dan maju ke buffer berikutnya sampai PostBufferList kosong atau antrean penuh (atau mendekati penuh). Penyedia maju ke PostListHead dan mengembalikan kepala daftar baru ke pemanggil. Penyedia juga menghapus buffer yang telah selesai dari antrean dan memasukkannya ke dalam ekor DrainBufferList dan mengembalikan ekor DrainBufferList baru ke klien.
Contoh
Untuk menentukan fungsi PDPostAndDrainBufferList , 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 PDPostAndDrainBufferList yang diberi nama "MyPDPostAndDrainBufferList", gunakan jenis NDIS_PD_POST_AND_DRAIN_BUFFER_LIST seperti yang ditunjukkan dalam contoh kode ini:
NDIS_PD_POST_AND_DRAIN_BUFFER_LIST MyPDPostAndDrainBufferList;
Kemudian, terapkan fungsi Anda sebagai berikut:
_Use_decl_annotations_
VOID
MyPDPostAndDrainBufferList(
NDIS_PD_QUEUE* Queue,
PD_BUFFER** PostBufferListHead,
PD_BUFFER*** DrainBufferListTail,
ULONG MaxDrainCount
)
{...}
Jenis fungsi NDIS_PD_POST_AND_DRAIN_BUFFER_LIST ditentukan dalam file header Ntddndis.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 NDIS_PD_POST_AND_DRAIN_BUFFER_LIST 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.
Berikut ini adalah contoh cuplikan kode yang menggambarkan tidak langsung penunjuk untuk fungsi ini.
PD_BUFFER* PostHead = NULL;
PD_BUFFER** PostTail = &PostHead;
PD_BUFFER* DrainHead = NULL;
PD_BUFFER** DrainTail = &DrainHead;
PD_BUFFER* bufX = <allocated PD_BUFFER>;
bufX->NextPDBuffer = NULL;
*PostTail = bufX;
PostTail = &bufX->NextPDBuffer;
// BEFORE:
//PostHead == bufX
//PostTail == &bufZ->NextPDBuffer
//DrainHead == NULL
//DrainTail == &DrainHead
NDIS_PD_POST_AND_DRAIN_BUFFER_LIST(
Queue,
&PostHead,
&DrainTail,
32);
// AFTER:
//PostHead == bufY
//PostTail == &bufZ->NextPDBuffer
//DrainHead == buf1
//DrainTail == &buf5->NextPDBuffer
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 |
Server minimum yang didukung | Server Windows 2016 |
Target Platform | Windows |
Header | ndis.h |
IRQL | <= DISPATCH_LEVEL |
Saran 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