Compartilhar via


Função FwpmSubLayerAdd0 (fwpmu.h)

A função FwpmSubLayerAdd0 adiciona uma nova subcamada ao sistema.

Sintaxe

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

Parâmetros

[in] engineHandle

Tipo: HANDLE

Manipule para uma sessão aberta para o mecanismo de filtro. Chame FwpmEngineOpen0 para abrir uma sessão para o mecanismo de filtro.

[in] subLayer

Tipo: FWPM_SUBLAYER0*

O subcaminho a ser adicionado.

[in, optional] sd

Tipo: PSECURITY_DESCRIPTOR

Informações de segurança para o objeto de subcaminho.

Retornar valor

Tipo: DWORD

Valor/código retornado Descrição
ERROR_SUCCESS
0
O subcaminho foi adicionado com êxito.
código de erro FWP_E_*
0x80320001 — 0x80320039
Um erro específico da Plataforma de Filtragem do Windows (WFP). Consulte Códigos de erro WFP para obter detalhes.
código de erro RPC_*
0x80010001 — 0x80010122
Falha ao se comunicar com o mecanismo de firewall remoto ou local.

Comentários

Se o chamador fornecer um descritor de segurança nulo, o sistema atribuirá um descritor de segurança padrão.

Essa função não pode ser chamada de dentro de uma transação somente leitura. Ele falhará com FWP_E_INCOMPATIBLE_TXN. Consulte Gerenciamento de Objetos para obter mais informações sobre transações.

O chamador precisa FWPM_ACTRL_ADD acesso ao contêiner das subcaminhos e FWPM_ACTRL_ADD_LINK acesso ao provedor (se houver). Consulte Controle de Acesso para obter mais informações.

FwpmSubLayerAdd0 é uma implementação específica do FwpmSubLayerAdd. Consulte Nomes de Version-Independent WFP e Direcionamento de versões específicas do Windows para obter mais informações.

Exemplos

O exemplo C++ a seguir ilustra a inicialização de um objeto de subcaminha e a adição da chave de subcaminha a um 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 Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho fwpmu.h
Biblioteca Fwpuclnt.lib
DLL Fwpuclnt.dll

Confira também

FWPM_SUBLAYER0

Funções de gerenciamento

Funções WFP