Freigeben über


FwpmSubLayerAdd0-Funktion (fwpmu.h)

Die FwpmSubLayerAdd0-Funktion fügt dem System eine neue Unterschicht hinzu.

Syntax

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

Parameter

[in] engineHandle

Typ: HANDLE

Handle für eine geöffnete Sitzung für die Filter-Engine. Rufen Sie FwpmEngineOpen0 auf, um eine Sitzung für die Filter-Engine zu öffnen.

[in] subLayer

Typ: FWPM_SUBLAYER0*

Die hinzuzufügende Unterschicht.

[in, optional] sd

Typ: PSECURITY_DESCRIPTOR

Sicherheitsinformationen für das Sublayerobjekt.

Rückgabewert

Art: DWORD

Rückgabecode/-wert BESCHREIBUNG
ERROR_SUCCESS
0
Die Unterschicht wurde erfolgreich hinzugefügt.
FWP_E_*-Fehlercode
0x80320001 – 0x80320039
Ein WFP-spezifischer Fehler (Windows Filtering Platform). Weitere Informationen finden Sie unter WFP-Fehlercodes .
RPC_*-Fehlercode
0x80010001 – 0x80010122
Fehler bei der Kommunikation mit der Remote- oder lokalen Firewall-Engine.

Hinweise

Wenn der Aufrufer einen NULL-Sicherheitsdeskriptor bereitstellt, weist das System einen Standardsicherheitsdeskriptor zu.

Diese Funktion kann nicht innerhalb einer schreibgeschützten Transaktion aufgerufen werden. Bei FWP_E_INCOMPATIBLE_TXN tritt ein Fehler auf. Weitere Informationen zu Transaktionen finden Sie unter Objektverwaltung .

Der Aufrufer benötigt FWPM_ACTRL_ADD Zugriff auf den Container der Sublayer und FWPM_ACTRL_ADD_LINK Zugriff auf den Anbieter (falls vorhanden). Weitere Informationen finden Sie unter Access Control.

FwpmSubLayerAdd0 ist eine spezifische Implementierung von FwpmSubLayerAdd. Weitere Informationen finden Sie unter WFP-Version-Independent Namen und Spezifische Windows-Versionen .

Beispiele

Das folgende C++-Beispiel veranschaulicht die Initialisierung eines Sublayerobjekts und das Hinzufügen des Unterschichtschlüssels zu einem Filterobjekt.

#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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile fwpmu.h
Bibliothek Fwpuclnt.lib
DLL Fwpuclnt.dll

Weitere Informationen

FWPM_SUBLAYER0

Verwaltungsfunktionen

WFP-Funktionen