共用方式為


FwpmTransactionBegin0 函式 (fwpmu.h)

FwpmTransactionBegin0 函式會在目前的會話內開始明確的交易。

語法

DWORD FwpmTransactionBegin0(
  [in] HANDLE engineHandle,
  [in] UINT32 flags
);

參數

[in] engineHandle

類型: HANDLE

篩選引擎開啟會話的句柄。 呼叫 FwpmEngineOpen0 以開啟篩選引擎的會話。

[in] flags

類型: UINT32

可能的值:

交易旗標 意義
0
開始讀取/寫入交易。
FWPM_TXN_READ_ONLY
開始唯讀交易。

傳回值

類型: DWORD

傳回碼/值 Description
ERROR_SUCCESS
0
已成功啟動交易。
FWP_E_* 錯誤碼
0x80320001— 0x80320039
Windows 篩選平臺 () 特定錯誤。 如需詳細資訊,請參閱 其錯誤碼
RPC_* 錯誤碼
0x80010001— 0x80010122
無法與遠端或本機防火牆引擎通訊。

備註

無法從交易內呼叫此函式。 它將會失敗 ,並FWP_E_TXN_IN_PROGRESS。 如需交易的詳細資訊,請參閱 物件管理

對於唯讀交易,呼叫端需要 FWPM_ACTRL_BEGIN_READ_TXN 篩選引擎的存取權。 對於讀取/寫入交易,呼叫端需要 FWPM_ACTRL_BEGIN_WRITE_TXN 篩選引擎的存取權。 如需詳細資訊,請參閱 存取控制

FwpmTransactionBegin0 是 FwpmTransactionBegin 的特定實作。 如需詳細資訊 ,請參閱 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
程式庫 Fwpuclnt.lib
Dll Fwpuclnt.dll

另請參閱

FwpmTransactionAbort0

FwpmTransactionCommit0