Freigeben über


fwpmTransactionBegin0-Funktion (fwpmu.h)

Die FwpmTransactionBegin0-Funktion beginnt eine explizite Transaktion innerhalb der aktuellen Sitzung.

Syntax

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

Parameter

[in] engineHandle

Typ: HANDLE

Handle für eine geöffnete Sitzung für die Filter-Engine. Rufen Sie FwpmEngineOpen0 auf, um eine Sitzung für die Filter-Engine zu öffnen.

[in] flags

Typ: UINT32

Mögliche Werte:

Transaktionsflag Bedeutung
0
Beginnen Sie die Transaktion mit Lese-/Schreibzugriff.
FWPM_TXN_READ_ONLY
Beginnen Sie mit der schreibgeschützten Transaktion.

Rückgabewert

Art: DWORD

Rückgabecode/-wert BESCHREIBUNG
ERROR_SUCCESS
0
Die Transaktion wurde erfolgreich gestartet.
FWP_E_*-Fehlercode
0x80320001 – 0x80320039
Ein WFP-spezifischer Fehler (Windows Filtering Platform). Weitere Informationen finden Sie unter WFP-Fehlercodes .
RPC_*-Fehlercode
0x80010001 – 0x80010122
Fehler bei der Kommunikation mit der Remote- oder lokalen Firewall-Engine.

Hinweise

Diese Funktion kann nicht innerhalb einer Transaktion aufgerufen werden. Bei FWP_E_TXN_IN_PROGRESS tritt ein Fehler auf. Weitere Informationen zu Transaktionen finden Sie unter Objektverwaltung .

Für eine schreibgeschützte Transaktion benötigt der Aufrufer FWPM_ACTRL_BEGIN_READ_TXN Zugriff auf das Filtermodul. Für eine Lese-/Schreibtransaktion benötigt der Aufrufer FWPM_ACTRL_BEGIN_WRITE_TXN Zugriff auf die Filter-Engine. Weitere Informationen finden Sie unter Access Control.

FwpmTransactionBegin0 ist eine spezifische Implementierung von FwpmTransactionBegin. Weitere Informationen finden Sie unter WFP Version-Independent Namen und Zielgruppenspezifische Windows-Versionen .

Beispiele

Im folgenden C++-Beispiel wird veranschaulicht, wie die FwpmFilterAdd0-Funktion in eine FWP-Transaktion umschlossen wird.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile fwpmu.h
Bibliothek fwpuclnt.lib
DLL Fwpuclnt.dll

Weitere Informationen

FwpmTransactionAbort0

FwpmTransactionCommit0