Fonction FwpmTransactionBegin0 (fwpmu.h)
La fonction FwpmTransactionBegin0 commence une transaction explicite dans la session active.
Syntaxe
DWORD FwpmTransactionBegin0(
[in] HANDLE engineHandle,
[in] UINT32 flags
);
Paramètres
[in] engineHandle
Type : HANDLE
Handle pour une session ouverte sur le moteur de filtre. Appelez FwpmEngineOpen0 pour ouvrir une session sur le moteur de filtre.
[in] flags
Type : UINT32
Valeurs possibles :
Indicateur de transaction | Signification |
---|---|
|
Commencez la transaction en lecture/écriture. |
|
Commencez la transaction en lecture seule. |
Valeur retournée
Type : DWORD
Code/valeur de retour | Description |
---|---|
|
La transaction a été démarrée avec succès. |
|
Une erreur spécifique à la plateforme de filtrage Windows (PAM). Pour plus d’informations, consultez Codes d’erreur PAM . |
|
Échec de la communication avec le moteur de pare-feu distant ou local. |
Remarques
Cette fonction ne peut pas être appelée à partir d’une transaction. Elle échoue avec FWP_E_TXN_IN_PROGRESS. Pour plus d’informations sur les transactions, consultez Gestion des objets.
Pour une transaction en lecture seule, l’appelant a besoin d’un accès FWPM_ACTRL_BEGIN_READ_TXN au moteur de filtre. Pour une transaction en lecture/écriture, l’appelant a besoin d’un accès FWPM_ACTRL_BEGIN_WRITE_TXN au moteur de filtre. Pour plus d’informations, consultez Access Control.
FwpmTransactionBegin0 est une implémentation spécifique de FwpmTransactionBegin. Pour plus d’informations , consultez WFP Version-Independent Names and Targeting Specific Versions of Windows .
Exemples
L’exemple C++ suivant illustre l’encapsulation de la fonction FwpmFilterAdd0 dans une transaction 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;
}
// ----------------------------------------------------------------------
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | fwpmu.h |
Bibliothèque | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |