WFP API
API Windows Filtering Platform (WFP) dibagi menjadi komponen berikut.
Komponen | Deskripsi | File Header |
---|---|---|
API Callout (FWPS)${REMOVE}$ |
Jenis data yang digunakan oleh callout. Catatan Jenis data ini di dokumentasikan dalam Microsoft Windows Driver Development Kit (DDK). |
fwpstypes.idl |
Fungsi dan jenis enumerasi yang digunakan untuk mengimplementasikan callout. Catatan Fungsi-fungsi ini dan jenis enumerasi didokumenkan dalam DDK. |
fwpsk.h |
|
IKE/AuthIP API (IKEEXT)${REMOVE}$ |
Jenis dan struktur enumerasiyang digunakan untuk mengelola kebijakan dan asosiasi keamanan mode utama (MM) IKE dan AuthIP. |
iketypes.idl |
Fungsi yang digunakan untuk mengelola kebijakan IKE dan AuthIP MM dan asosiasi keamanan. |
fwpmk.h |
|
IPsec API (IPSEC)${REMOVE}$ |
Jenis dan struktur enumerasiyang digunakan untuk mengelola kebijakan IPsec dan asosiasi keamanan. |
ipsectypes.idl |
Fungsi yang digunakan untuk mengelola kebijakan IPsec dan asosiasi keamanan. |
fwpmk.h |
|
API Manajemen (FWPM)${REMOVE}$ |
Jenis dan struktur enumerasiyang digunakan untuk mengelola mesin filter. |
fwpmtypes.idl |
Fungsi yang digunakan untuk mengelola mesin filter. Fungsi-fungsi ini digunakan untuk melakukan tugas-tugas berikut:
|
fwpmk.h |
|
API Bersama (FWP) | Jenis dan strukturdasar yang dijumlahkan yang dibagikan di seluruh Platform Pemfilteran Windows. |
fwptypes.idl |
Nama jenis data semuanya huruf besar dan garis bawah dibatasi. Nama selalu dimulai dengan awalan yang mengidentifikasi grup komponennya, seperti FWPM_PROVIDER0.
Nama fungsi adalah mixed-case dan case-delimited. Nama selalu dimulai dengan awalan yang mengidentifikasi grup komponennya, seperti FwpmProviderContextAdd0.
Sebagian besar data dan nama fungsi diakhir dengan nomor versi. File header fwpvi.h memetakan data independen versi dan nama fungsi ke versi yang sesuai untuk digunakan dengan sistem operasi tertentu. Untuk informasi selengkapnya, lihat Nama Version-Independent WFP dan Menargetkan Versi Windows Tertentu.
Setiap komponen tidak berdiri sendiri. Misalnya, kebijakan mode utama (MM) IKE didefinisikan dalam komponen IKEEXT, tetapi disimpan dalam konteks penyedia dan dikaitkan dengan filter yang keduanya ditemukan dalam komponen FWPM API.
Sebagian besar fungsi WFP dapat dipanggil dari mode pengguna atau mode kernel. Namun, fungsi mode pengguna mengembalikan nilai DWORD yang mewakili kode kesalahan Win32, sedangkan fungsi mode kernel mengembalikan nilai NTSTATUS yang mewakili kode status NT. Akibatnya, nama fungsi dan semantik identik antara mode pengguna dan mode kernel, tetapi tanda tangan fungsi tidak. Ini memerlukan header khusus mode pengguna dan mode kernel terpisah untuk prototipe fungsi. Nama file header mode pengguna berakhiran "u" dan nama file header mode kernel berakhiran "k".
Tabel berikut mencantumkan file header Win32 yang menentukan fungsi WFP.
File Header | Deskripsi |
---|---|
fwpmk.h | Prototipe fungsi mode kernel untuk komponen FWPM, IPsec, dan IKEEXT. Hanya tersedia di DDK. |
fwpmu.h | Prototipe fungsi mode pengguna untuk komponen FWPM, IPsec, dan IKEEXT. Hanya tersedia di Microsoft Windows Software Development Kit (SDK). |
fwpsk.h | Prototipe fungsi mode kernel dan jenis enumerasi untuk komponen FWPS. Hanya tersedia di DDK. |
fwpsu.h | Prototipe fungsi mode pengguna dan jenis enumerasi untuk komponen FWPS. Hanya tersedia di Windows SDK. Catatan Jenis enumerasi FWPS mode pengguna identik dengan jenis enumerasi FWPS mode kernel. Akibatnya, jenis-jenis ini hanya di dokumentasikan dalam DDK. Catatan Prototipe fungsi FWPS mode pengguna identik dengan prototipe fungsi FWPS mode kernel dengan pengecualian kode pengembalian. Fungsi FWPS mode pengguna mengembalikan DWORD, sedangkan fungsi FWPS mode kernel mengembalikan NTSTATUS. Akibatnya, fungsi-fungsi ini hanya di dokumentasikan dalam DDK. |
Semua fungsi mode pengguna diekspor dari fwpuclnt.dll. Semua fungsi mode kernel diekspor dari fwpkclnt.sys.
Sebagian besar jenis data FWPM, yang digunakan untuk tugas manajemen seperti menambahkan filter atau callout dari aplikasi atau driver, memiliki rekan FWPS. Jenis data FWPS digunakan selama pemfilteran lalu lintas jaringan yang sebenarnya, dalam konteks rutinitas callout untuk klasifikasi.
Misalnya, untuk menambahkan filter ke lapisan mesin pemfilteran tertentu, programmer harus menggunakan jenis FWPM, seperti: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET
. Untuk memeriksa dari lapisan mana callout dipanggil, programmer harus menggunakan jenis FWPS yang sesuai: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET)
.
Beberapa rekan FWPS untuk jenis data FWPM memperluas jenis data FWPM asli. Misalnya, untuk menambahkan kondisi filter di banyak lapisan mesin pemfilteran, programmer menentukan filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL
terlepas dari lapisan mesin pemfilteran. Untuk menemukan nilai kondisi filter, programmer menentukan jenis FWPS tertentu lapisan, seperti: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL]
.
Jenis data FWPS umumnya lebih kecil dari rekan FWPM mereka. Misalnya, pengidentifikasi lapisan pemfilteran FWPM adalah GUIDs (16-byte) sedangkan pengidentifikasi lapisan pemfilteran FWPS adalah UINT16 (16-bit). Ukuran yang lebih kecil untuk jenis data FWPS meningkatkan performa sistem karena perbandingan bilangan bulat melebihi perbandingan GUID untuk lalu lintas real-time. Selain itu, memori kernel digunakan secara efisien karena jenis FWPS semuanya digunakan dalam kernel untuk mengelola filter, sedangkan jenis FWPM disimpan dalam mode pengguna untuk mengelola lapisan yang berbeda.