FwpmTransactionBegin0 函数 (fwpmu.h)
FwpmTransactionBegin0 函数在当前会话中开始显式事务。
语法
DWORD FwpmTransactionBegin0(
[in] HANDLE engineHandle,
[in] UINT32 flags
);
参数
[in] engineHandle
类型: 句柄
筛选器引擎的打开会话的句柄。 调用 FwpmEngineOpen0 以打开与筛选器引擎的会话。
[in] flags
类型: UINT32
可能的值:
事务标志 | 含义 |
---|---|
|
开始读/写事务。 |
|
开始只读事务。 |
返回值
类型:DWORD
返回代码/值 | 说明 |
---|---|
|
事务已成功启动。 |
|
Windows 筛选平台 (WFP) 特定错误。 有关详细信息 ,请参阅 WFP 错误代码 。 |
|
无法与远程或本地防火墙引擎通信。 |
注解
不能从事务内部调用此函数。 它将失败并 出现FWP_E_TXN_IN_PROGRESS。 有关事务的详细信息,请参阅 对象管理 。
对于只读事务,调用方需要 FWPM_ACTRL_BEGIN_READ_TXN 筛选器引擎的访问权限。 对于读/写事务,调用方需要 FWPM_ACTRL_BEGIN_WRITE_TXN 筛选器引擎的访问权限。 有关详细信息,请参阅访问控制。
FwpmTransactionBegin0 是 FwpmTransactionBegin 的特定实现。 有关详细信息 ,请参阅 WFP Version-Independent 名称和面向 Windows 的特定版本 。
示例
以下 C++ 示例演示如何在 FWP 事务中包装 FwpmFilterAdd0 函数。
#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;
}
// ----------------------------------------------------------------------
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | fwpmu.h |
Library | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |