Fungsi FwpmSubLayerAdd0 (fwpmu.h)

Fungsi FwpmSubLayerAdd0 menambahkan sublayer baru ke sistem.

Sintaks

DWORD FwpmSubLayerAdd0(
  [in]           HANDLE               engineHandle,
  [in]           const FWPM_SUBLAYER0 *subLayer,
  [in, optional] PSECURITY_DESCRIPTOR sd
);

Parameter

[in] engineHandle

Jenis: HANDEL

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

[in] subLayer

Jenis: FWPM_SUBLAYER0*

Sublayer yang akan ditambahkan.

[in, optional] sd

Jenis: PSECURITY_DESCRIPTOR

Informasi keamanan untuk objek sublayer.

Nilai kembali

Jenis: DWORD

Mengembalikan kode/nilai Deskripsi
ERROR_SUCCESS
0
Sublayer berhasil ditambahkan.
FWP_E_* kode kesalahan
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

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

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 akses FWPM_ACTRL_ADD ke kontainer sublayer dan akses FWPM_ACTRL_ADD_LINK ke penyedia (jika ada). Lihat Access Control untuk informasi selengkapnya.

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

Contoh

Contoh C++ berikut mengilustrasikan inisialisasi objek sublayer dan menambahkan kunci sublayer ke objek filter.

#include <windows.h>
#include <fwpmu.h>
#include <rpc.h>
#include <stdio.h>

#pragma comment(lib, "Fwpuclnt.lib")
#pragma comment(lib, "Rpcrt4.lib")

void main()
{
    FWPM_FILTER0    fwpFilter;
    FWPM_SUBLAYER0    fwpFilterSubLayer;
    HANDLE engineHandle = NULL;     
    DWORD  result = ERROR_SUCCESS; 
    RPC_STATUS rpcStatus = RPC_S_OK;
     
    memset(&fwpFilterSubLayer, 0, sizeof(fwpFilterSubLayer));
    rpcStatus = UuidCreate(&fwpFilterSubLayer.subLayerKey);
          
    if (RPC_S_OK != rpcStatus)
    {
           printf("UuidCreate failed (%d).\n", rpcStatus);
           return;
    }

    result = FwpmEngineOpen0( NULL, RPC_C_AUTHN_WINNT, NULL, NULL, &engineHandle );
    if (result != ERROR_SUCCESS)
    {
        printf("FwpmEngineOpen0 failed.\n");
        return;
    }

    fwpFilterSubLayer.displayData.name = L"MyFilterSublayer";
    fwpFilterSubLayer.displayData.description = L"My filter sublayer";
    fwpFilterSubLayer.flags = 0;
    fwpFilterSubLayer.weight = 0x100;
            
    printf("Adding filter sublayer.\n");
      result = FwpmSubLayerAdd0(engineHandle, &fwpFilterSubLayer, NULL);

      if (result != ERROR_SUCCESS)
      {           
           printf("FwpmSubLayerAdd0 failed (%d).\n", result);
           return;
    }

    // Add sublayer key to a filter.
    memset(&fwpFilter, 0, sizeof(FWPM_FILTER0));

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

    // Finish initializing filter...

    return;
}

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_SUBLAYER0

Fungsi Manajemen

Fungsi WFP