Funzione FwpmTransactionBegin0 (fwpmu.h)
La funzione FwpmTransactionBegin0 inizia una transazione esplicita all'interno della sessione corrente.
Sintassi
DWORD FwpmTransactionBegin0(
[in] HANDLE engineHandle,
[in] UINT32 flags
);
Parametri
[in] engineHandle
Tipo: HANDLE
Handle per una sessione aperta al motore di filtro. Chiamare FwpmEngineOpen0 per aprire una sessione al motore di filtro.
[in] flags
Tipo: UINT32
Valori possibili:
Flag delle transazioni | Significato |
---|---|
|
Iniziare la transazione di lettura/scrittura. |
|
Iniziare la transazione di sola lettura. |
Valore restituito
Tipo: DWORD
Codice/valore restituito | Descrizione |
---|---|
|
La transazione è stata avviata correttamente. |
|
Errore specifico di Windows Filtering Platform (WFP). Per informazioni dettagliate, vedere Codici di errore WFP . |
|
Non è possibile comunicare con il motore firewall remoto o locale. |
Commenti
Questa funzione non può essere chiamata dall'interno di una transazione. Avrà esito negativo con FWP_E_TXN_IN_PROGRESS. Per altre informazioni sulle transazioni, vedere Gestione oggetti .
Per una transazione di sola lettura, il chiamante deve FWPM_ACTRL_BEGIN_READ_TXN l'accesso al motore di filtro. Per una transazione di lettura/scrittura, il chiamante deve FWPM_ACTRL_BEGIN_WRITE_TXN l'accesso al motore di filtro. Per altre informazioni, vedere Controllo di accesso.
FwpmTransactionBegin0 è un'implementazione specifica di FwpmTransactionBegin . Per altre informazioni , vedere Nomi Version-Independent WFP e Versioni specifiche di Windows .
Esempio
Nell'esempio C++ seguente viene illustrato il wrapping della funzione FwpmFilterAdd0 in una transazione 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;
}
// ----------------------------------------------------------------------
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | fwpmu.h |
Libreria | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |