Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Data jaringan ditunjukkan dalam WFP sebagai daftar buffer net NDIS (NET_BUFFER_LIST). Anggota Next dari struktur NET_BUFFER_LIST dapat digunakan untuk menggambarkan rantai daftar net buffer. WFP hanya menunjukkan satu daftar buffer jaringan ke callout (yaitu, netBufferList-Next> == NULL), kecuali untuk kasus berikut:
WFP dapat menunjukkan rantai daftar buffer bersih ke callout dari lapisan Stream.
WFP menunjukkan rantai daftar buffer bersih ke callout saat mengklasifikasikan grup fragmen paket IP di jalur penerusan ke callout. Setiap daftar buffer jaringan di dalam rantai menjelaskan satu fragmen.
Meskipun daftar buffer jaringan dapat menggambarkan seluruh paket, untuk berbagai jenis lapisan, WFP menunjukkan daftar buffer jaringan ke titik panggilan pada offset yang berbeda dari awal header IP. Misalnya, pada lapisan jaringan masuk, daftar buffer bersih dimulai setelah header IP, sementara pada lapisan transportasi masuk, daftar buffer bersih dimulai setelah header transportasi. Header IP dan transport selalu dijelaskan oleh struktur NET_BUFFER pertama di dalam daftar net buffer.
Offset ke daftar buffer jaringan ditunjukkan ke callout dengan anggota ipHeaderSize dan transportHeaderSize dari struktur FWPS_INCOMING_METADATA_VALUES0. Panggilan balik dapat menggunakan fungsi NDIS NdisRetreatNetBufferDataStart dan NdisAdvanceNetBufferDataStart untuk menyesuaikan offset yang ditunjukkan dari daftar buffer jaringan. Namun dalam hal ini, callout harus membatalkan penyesuaian offset sebelum kembali dari fungsi classifyFn .
Dalam panggilan ke fungsi classifyFn untuk data keluar, NET_BUFFER_LIST dapat berisi lebih dari satu struktur NET_BUFFER , yang masing-masing menjelaskan paket IP. Jika beberapa paket (misalnya, penyangga jaringan) dalam daftar penyangga jaringan dapat diterima, tetapi yang lain tidak, driver callout harus melakukan hal berikut:
Kloning serta blok seluruh daftar buffer jaringan.
Buat daftar buffer net baru yang menjelaskan subset buffer bersih yang dapat diterima.
Masukkan daftar buffer net baru kembali ke jalur kirim.
Atau, callout dapat memutus tautan net buffer yang tidak diinginkan dari daftar net buffer dan menyuntikkan daftar net buffer yang telah diubah kembali ke jalur pengiriman. Namun, dalam hal ini driver callout harus membatalkan modifikasi ini pada daftar buffer jaringan hasil kloning sebelum memanggil fungsi FwpsFreeCloneNetBufferList0. Driver callout juga harus menyimpan informasi keterkaitan penyangga jaringan asli sebagai bagian dari data statusnya.
Untuk informasi selengkapnya tentang offset data yang digunakan oleh WFP, lihat Posisi Offset Data.
Nota Callout yang bekerja dengan paket IPSec ESP yang didekripsi harus menggunakan panjang data struktur NET_BUFFER alih-alih data MDL untuk menentukan panjang paket. Untuk mendapatkan panjang data, gunakan makro NET_BUFFER_DATA_LENGTH . Untuk informasi selengkapnya, lihat Mengembangkan Callout Drivers IPsec-Compatible.