Função FwpmTransactionBegin0 (fwpmu.h)
A função FwpmTransactionBegin0 inicia uma transação explícita dentro da sessão atual.
Sintaxe
DWORD FwpmTransactionBegin0(
[in] HANDLE engineHandle,
[in] UINT32 flags
);
Parâmetros
[in] engineHandle
Tipo: HANDLE
Identificador de uma sessão aberta para o mecanismo de filtro. Chame FwpmEngineOpen0 para abrir uma sessão para o mecanismo de filtro.
[in] flags
Tipo: UINT32
Valores possíveis:
Sinalizador de transação | Significado |
---|---|
|
Inicie a transação de leitura/gravação. |
|
Iniciar transação somente leitura. |
Retornar valor
Tipo: DWORD
Valor/código retornado | Descrição |
---|---|
|
A transação foi iniciada com êxito. |
|
Um erro específico da Plataforma de Filtragem do Windows (WFP). Consulte Códigos de erro do WFP para obter detalhes. |
|
Falha ao se comunicar com o mecanismo de firewall remoto ou local. |
Comentários
Essa função não pode ser chamada de dentro de uma transação. Ele falhará com FWP_E_TXN_IN_PROGRESS. Consulte Gerenciamento de Objetos para obter mais informações sobre transações.
Para uma transação somente leitura, o chamador precisa FWPM_ACTRL_BEGIN_READ_TXN acesso ao mecanismo de filtro. Para uma transação de leitura/gravação, o chamador precisa FWPM_ACTRL_BEGIN_WRITE_TXN acesso ao mecanismo de filtro. Consulte Controle de Acesso para obter mais informações.
FwpmTransactionBegin0 é uma implementação específica de FwpmTransactionBegin. Consulte Nomes de Version-Independent WFP e Direcionamento de versões específicas do Windows para obter mais informações.
Exemplos
O exemplo C++ a seguir ilustra como encapsular a função FwpmFilterAdd0 em uma transação 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 | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | fwpmu.h |
Biblioteca | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |