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 |
---|---|
|
Inicie la transacción de lectura y escritura. |
|
Inicie la transacción de solo lectura. |
Valor devuelto
Tipo: DWORD
Código o valor devuelto | Descripción |
---|---|
|
La transacción se inició correctamente. |
|
Error específico de la Plataforma de filtrado de Windows (PMA). Consulte Códigos de error de PMA para obtener más información. |
|
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 |