Bagikan melalui


Fungsi FwpmFilterAdd0 (fwpmu.h)

Fungsi FwpmFilterAdd0 menambahkan objek filter baru ke sistem.

Sintaks

DWORD FwpmFilterAdd0(
  [in]            HANDLE               engineHandle,
  [in]            const FWPM_FILTER0   *filter,
  [in, optional]  PSECURITY_DESCRIPTOR sd,
  [out, optional] UINT64               *id
);

Parameter

[in] engineHandle

Jenis: HANDEL

Menangani sesi terbuka ke mesin filter. Panggil FwpmEngineOpen0 untuk membuka sesi ke mesin filter.

[in] filter

Jenis: FWPM_FILTER0*

Objek filter yang akan ditambahkan.

[in, optional] sd

Jenis: SECURITY_DESCRIPTOR

Informasi keamanan tentang objek filter.

[out, optional] id

Jenis: UINT64*

Pengidentifikasi runtime untuk filter ini.

Mengembalikan nilai

Jenis: DWORD

Mengembalikan kode/nilai Deskripsi
ERROR_SUCCESS
0
Filter berhasil ditambahkan.
ERROR_INVALID_SECURITY_DESCR
0x8007053A
Struktur deskriptor keamanan tidak valid. Atau, kondisi filter berisi deskriptor keamanan dalam format absolut.
FWP_E_CALLOUT_NOTIFICATION_FAILED
0x80320037
Pemanggil menambahkan filter callout dan callout mengembalikan kesalahan dari rutinitas pemberitahuannya.
kode kesalahan FWP_E_*
0x80320001—0x80320039
Kesalahan spesifik Windows Filtering Platform (WFP). Lihat Kode Kesalahan WFP untuk detailnya.
RPC_* kode kesalahan
0x80010001—0x80010122
Gagal berkomunikasi dengan mesin firewall jarak jauh atau lokal.

Keterangan

FwpmFilterAdd0 menambahkan filter ke sub-lapisan yang ditentukan di setiap lapisan pemfilteran dalam sistem.

Beberapa bidang dalam struktur FWPM_FILTER0 ditetapkan oleh sistem, bukan pemanggil, dan diabaikan dalam panggilan ke FwpmFilterAdd0.

Jika penelepon menyediakan deskriptor keamanan NULL , sistem akan menetapkan pendeskripsi keamanan default.

Untuk memblokir koneksi ke lokasi tertentu, tambahkan filter FWP_ACTION_BLOCK yang menentukan alamat lokal di lapisan FWPM_LAYER_ALE_AUTH_CONNECT_V* , atau tambahkan filter FWP_ACTION_BLOCK tanpa menentukan alamat lokal di lapisan FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V*.

Catatan

Jika alamat lokal ditentukan pada lapisan penetapan sumber daya, ikatan implisit akan berhasil karena alamat, jenis alamat, dan port dapat kembali sebagai FWP_EMPTY.

Struktur FWPM_FILTER0 dapat memberi label filter sebagai filter boot-time atau persisten. Filter waktu boot ditambahkan ke Mesin Pemfilteran Dasar (BFE) saat driver TCP/IP dimulai, dan dihapus setelah BFE menyelesaikan inisialisasi. Objek persisten ditambahkan saat BFE dimulai.

Fungsi ini tidak dapat dipanggil dari dalam transaksi baca-saja. Ini akan gagal dengan FWP_E_INCOMPATIBLE_TXN. Lihat Manajemen Objek untuk informasi selengkapnya tentang transaksi.

Pemanggil memerlukan hak akses berikut:

Lihat Access Control untuk informasi selengkapnya.

Untuk menambahkan filter yang mereferensikan callout, panggil fungsi dalam urutan berikut.

  • Panggil FwpsCalloutRegister0 (didokumenkan dalam Windows Driver Kit (WDK)), untuk mendaftarkan callout dengan mesin filter.
  • Panggil FwpmCalloutAdd0 untuk menambahkan callout ke sistem.
  • Panggil FwpmFilterAdd0 untuk menambahkan filter yang mereferensikan callout ke sistem.

Secara default filter yang mereferensikan callout yang telah ditambahkan tetapi belum terdaftar di mesin filter diperlakukan sebagai filter Blokir.

FwpmFilterAdd0 adalah implementasi khusus dari FwpmFilterAdd. Lihat Nama Version-Independent WFP dan Menargetkan Versi Windows Tertentu untuk informasi selengkapnya.

Contoh

Contoh C++ berikut menunjukkan cara menginisialisasi dan menambahkan filter menggunakan FwpmFilterAdd0 yang
secara khusus memblokir lalu lintas pada IP V4 untuk semua aplikasi.


// Add filter to block traffic on IP V4 for all applications. 
//
FWPM_FILTER0      fwpFilter;
FWPM_SUBLAYER0    fwpFilterSubLayer;  

RtlZeroMemory(&fwpFilter, sizeof(FWPM_FILTER0));

fwpFilter.layerKey = FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4;
fwpFilter.action.type = FWP_ACTION_BLOCK;

if (&fwpFilterSubLayer.subLayerKey != NULL)
    fwpFilter.subLayerKey = fwpFilterSubLayer.subLayerKey;

fwpFilter.weight.type = FWP_EMPTY; // auto-weight.
fwpFilter.numFilterConditions = 0; // this applies to all application traffic
fwpFilter.displayData.name = L"Receive/Accept Layer Block";
fwpFilter.displayData.description = L"Filter to block all inbound connections.";

printf("Adding filter to block all inbound connections.\n");
result = FwpmFilterAdd0(engineHandle, &fwpFilter, NULL, NULL);

if (result != ERROR_SUCCESS)
    printf("FwpmFilterAdd0 failed. Return value: %d.\n", result);
else
    printf("Filter added successfully.\n");

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header fwpmu.h
Pustaka Fwpuclnt.lib
DLL Fwpuclnt.dll

Lihat juga

FWPM_FILTER0

Fungsi Manajemen

Fungsi WFP