Nama Version-Independent WFP dan Penargetan Versi Windows Tertentu
Dalam banyak kasus, API Windows Filtering Platform (WFP) menyediakan lebih dari satu versi fungsi atau struktur.
Sebagian besar nama data dan fungsi di API WFP diakhapi dengan nomor versi, seperti "0" atau "1", bahkan jika hanya ada satu versi.
Pemetaan Versi di fwpvi.h
File header fwpvi.h disertakan dimulai dengan Windows 7 SDK dan WDK. File header ini memetakan nama API tanpa versi ke versi yang sesuai untuk digunakan dengan sistem operasi tertentu.
Misalnya, berikut adalah kutipan singkat dari versi fwpvi.h yang disertakan dalam SDK Windows 8.
#define FwpmNetEventCreateEnumHandle FwpmNetEventCreateEnumHandle0
#if (NTDDI_VERSION >= NTDDI_WIN8)
#define FwpmNetEventEnum FwpmNetEventEnum2
#elif (NTDDI_VERSION >= NTDDI_WIN7)
#define FwpmNetEventEnum FwpmNetEventEnum1
#else
#define FwpmNetEventEnum FwpmNetEventEnum0
#endif
Seperti yang ditunjukkan di atas, hanya ada satu versi FwpmNetEventCreateEnumHandle – FwpmNetEventCreateEnumHandle0 – sehingga setiap panggilan ke FwpmNetEventCreateEnumHandle akan selalu memanggil FwpmNetEventCreateEnumHandle0, terlepas dari sistem operasi yang ditargetkan.
Namun, ada tiga versi FwpmNetEventEnum: FwpmNetEventEnum0, FwpmNetEventEnum1, dan FwpmNetEventEnum2. File header fwpvi.h memastikan bahwa panggilan ke FwpmNetEventEnum akan memanggil versi yang paling sesuai dengan sistem operasi yang ditargetkan:
- FwpmNetEventEnum2 untuk Windows 8 (atau yang lebih baru)
- FwpmNetEventEnum1 untuk Windows 7 ditargetkan
- FwpmNetEventEnum0 untuk sistem operasi sebelumnya (seperti Windows Vista atau Windows Vista dengan Paket Layanan 1 (SP1))
Memanggil Fungsi dan Struktur Version-Independent
Pengembang WFP yang menargetkan sistem operasi atau versi WDK tertentu didorong untuk selalu memprogram makro yang independen versinya. Ini akan secara otomatis memilih versi terbaru yang didukung dalam sistem operasi yang Anda targetkan. Penggunaan file header terbaru direkomendasikan, bahkan ketika menargetkan sistem operasi sebelumnya. Melakukan ini secara konsisten akan memastikan versi terbaru yang didukung digunakan, dan juga dapat mempermudah pemeliharaan dan pembaruan kode Anda.
Dokumentasi referensi WFP API menjelaskan setiap versi API bernomor. Jika ada lebih dari satu versi, sistem operasi yang ditargetkan akan dicatat. Namun, pengembang umumnya ingin memanggil API independen versi (tanpa angka), dan menunjukkan sistem operasi yang ditargetkan (seperti NTDDI_WIN6 untuk Windows Vista atau NTDDI_WIN8 untuk Windows 8).
Untuk memastikan penanganan fungsi yang tepat yang mengambil parameter yang berbeda dalam versi yang berbeda, Anda dapat menyertakan blok bersyarat seperti #if (NTDDI_VERSION >= NTDDI_WIN7)
.
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