Compartir a través de


Función FwpmTransactionBegin0 (fwpmu.h)

La función FwpmTransactionBegin0 inicia una transacción explícita dentro de la sesión actual.

Sintaxis

DWORD FwpmTransactionBegin0(
  [in] HANDLE engineHandle,
  [in] UINT32 flags
);

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] flags

Tipo: UINT32

Valores posibles:

Marca de transacción Significado
0
Inicie la transacción de lectura y escritura.
FWPM_TXN_READ_ONLY
Inicie la transacción de solo lectura.

Valor devuelto

Tipo: DWORD

Código o valor devuelto Descripción
ERROR_SUCCESS
0
La transacción se inició 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

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

Para una transacción de solo lectura, el autor de la llamada necesita FWPM_ACTRL_BEGIN_READ_TXN acceso al motor de filtro. Para una transacción de lectura y escritura, el autor de la llamada necesita FWPM_ACTRL_BEGIN_WRITE_TXN acceso al motor de filtros. Consulte Access Control para obtener más información.

FwpmTransactionBegin0 es una implementación específica de FwpmTransactionBegin. Para obtener más información, consulte NOMBRES de PMA Version-Independent y versiones específicas de destino de Windows .

Ejemplos

En el siguiente ejemplo de C++ se muestra cómo encapsular la función FwpmFilterAdd0 en una transacción FWP.

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

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

void main()
{
    HANDLE engineHandle = NULL; 

    FWPM_FILTER0      fwpFilter;

    RtlZeroMemory(&fwpFilter, sizeof(FWPM_FILTER0));
    fwpFilter.layerKey = FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4;
    fwpFilter.action.type = FWP_ACTION_BLOCK;
    fwpFilter.weight.type = FWP_EMPTY;
    fwpFilter.numFilterConditions = 0;

    DWORD  result = ERROR_SUCCESS; 
    DWORD fwpTxStatus = ERROR_SUCCESS;

    printf("Opening filter engine.\n");
    result = FwpmEngineOpen0(NULL, RPC_C_AUTHN_WINNT, NULL, NULL, &engineHandle);
      if (result != ERROR_SUCCESS)
      {            
        printf("FwpmEngineOpen0 failed (%d).\n", result);
        return;
    }
             
      printf("Adding filter to permit traffic for Application 1.\n");
      fwpTxStatus = FwpmTransactionBegin0(engineHandle, NULL);
      if (fwpTxStatus != ERROR_SUCCESS)
      {            
        printf("FwpmTransactionBegin0 failed (%d).\n", fwpTxStatus);
        return;
    }

    result = FwpmFilterAdd0(engineHandle, &fwpFilter, NULL, NULL);
      if (result != ERROR_SUCCESS)
      {            
        printf("FwpmFilterAdd0 failed (%d).\n", result);
        return;
    }

    result = FwpmTransactionCommit0(engineHandle);
    if (result != ERROR_SUCCESS)
    {            
        printf("FwpmTransactionCommit0 failed (%d).\n", result);
        return;
    }
    else
    {
        printf("Filter transaction (adding a filter) committed successfully.\n");
    }

    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

FwpmTransactionAbort0

FwpmTransactionCommit0