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 |
---|---|
|
Beginnen Sie die Transaktion mit Lese-/Schreibzugriff. |
|
Beginnen Sie mit der schreibgeschützten Transaktion. |
Rückgabewert
Art: DWORD
Rückgabecode/-wert | BESCHREIBUNG |
---|---|
|
Die Transaktion wurde erfolgreich gestartet. |
|
Ein WFP-spezifischer Fehler (Windows Filtering Platform). Weitere Informationen finden Sie unter WFP-Fehlercodes . |
|
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 |