Condividi tramite


Funzione FwpmSubLayerAdd0 (fwpmu.h)

La funzione FwpmSubLayerAdd0 aggiunge un nuovo sottostrato al sistema.

Sintassi

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

Parametri

[in] engineHandle

Tipo: HANDLE

Handle per una sessione aperta al motore di filtro. Chiamare FwpmEngineOpen0 per aprire una sessione al motore di filtro.

[in] subLayer

Tipo: FWPM_SUBLAYER0*

Sottostrato da aggiungere.

[in, optional] sd

Tipo: PSECURITY_DESCRIPTOR

Informazioni di sicurezza per l'oggetto sottostrato.

Valore restituito

Tipo: DWORD

Codice/valore restituito Descrizione
ERROR_SUCCESS
0
Il sottostrato è stato aggiunto correttamente.
FWP_E_* codice di errore
0x80320001: 0x80320039
Errore specifico di Windows Filtering Platform (WFP). Per informazioni dettagliate, vedere Codici di errore WFP .
RPC_* codice di errore
0x80010001: 0x80010122
Non è possibile comunicare con il motore firewall remoto o locale.

Commenti

Se il chiamante fornisce un descrittore di sicurezza Null, il sistema assegna un descrittore di sicurezza predefinito.

Questa funzione non può essere chiamata dall'interno di una transazione di sola lettura. Avrà esito negativo con FWP_E_INCOMPATIBLE_TXN. Per altre informazioni sulle transazioni, vedere Gestione oggetti .

Il chiamante deve FWPM_ACTRL_ADD l'accesso al contenitore dei sottostrati e FWPM_ACTRL_ADD_LINK l'accesso al provider (se presente). Per altre informazioni, vedere Controllo di accesso.

FwpmSubLayerAdd0 è un'implementazione specifica di FwpmSubLayerAdd. Per altre informazioni , vedere Nomi Version-Independent WFP e Versioni specifiche di Windows .

Esempio

L'esempio C++ seguente illustra l'inizializzazione di un oggetto sottostrato e l'aggiunta della chiave del sottostrato a un oggetto filtro.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione fwpmu.h
Libreria Fwpuclnt.lib
DLL Fwpuclnt.dll

Vedi anche

FWPM_SUBLAYER0

Funzioni di gestione

Funzioni WFP