Compartir a través de


Función FwpmSubLayerAdd0 (fwpmu.h)

La función FwpmSubLayerAdd0 agrega una nueva subcapa al sistema.

Sintaxis

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

Parámetros

[in] engineHandle

Tipo: HANDLE

Identificador de una sesión abierta en el motor de filtro. Llame a FwpmEngineOpen0 para abrir una sesión en el motor de filtro.

[in] subLayer

Tipo: FWPM_SUBLAYER0*

Subcapa que se va a agregar.

[in, optional] sd

Tipo: PSECURITY_DESCRIPTOR

Información de seguridad del objeto de subcapa.

Valor devuelto

Tipo: DWORD

Código o valor devuelto Descripción
ERROR_SUCCESS
0
La subcapa se agregó correctamente.
código de error FWP_E_*
0x80320001: 0x80320039
Error específico de la Plataforma de filtrado de Windows (PMA). Consulte Códigos de error de PMA para obtener más información.
RPC_* código de error*
0x80010001: 0x80010122
Error al comunicarse con el motor de firewall remoto o local.

Comentarios

Si el autor de la llamada proporciona un descriptor de seguridad nulo, el sistema asignará un descriptor de seguridad predeterminado.

No se puede llamar a esta función desde dentro de una transacción de solo lectura. Se producirá un error con FWP_E_INCOMPATIBLE_TXN. Consulte Administración de objetos para obtener más información sobre las transacciones.

El autor de la llamada necesita FWPM_ACTRL_ADD acceso al contenedor de las subcapas y FWPM_ACTRL_ADD_LINK acceso al proveedor (si existe). Consulte Access Control para obtener más información.

FwpmSubLayerAdd0 es una implementación específica de FwpmSubLayerAdd. Para obtener más información, vea NOMBRES DE Version-Independent DE PMA y versiones específicas de Windows dirigidas a destinatarios.

Ejemplos

En el siguiente ejemplo de C++ se muestra la inicialización de un objeto de subcapa y la adición de la clave de subcapa a un objeto de 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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado fwpmu.h
Library Fwpuclnt.lib
Archivo DLL Fwpuclnt.dll

Consulte también

FWPM_SUBLAYER0

Funciones de administración

Funciones de PMA