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 フィルタリング プラットフォーム (WFP) 固有のエラー。 詳細については、「 WFP エラー コード 」を参照してください。
RPC_* エラー コード
0x80010001 — 0x80010122
リモートまたはローカルのファイアウォール エンジンとの通信に失敗しました。

注釈

この関数は、トランザクション内から呼び出すことはできません。 FWP_E_TXN_IN_PROGRESSで失敗します。 トランザクションの詳細については、「 オブジェクト管理 」を参照してください。

読み取り専用トランザクションの場合、呼び出し元 フィルター エンジンFWPM_ACTRL_BEGIN_READ_TXNアクセスする必要があります。 読み取り/書き込みトランザクションの場合、呼び出し元はフィルター エンジンFWPM_ACTRL_BEGIN_WRITE_TXNアクセス する必要があります。 詳細については、「Access Control」を参照してください。

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

こちらもご覧ください

FwpmTransactionAbort0

FwpmTransactionCommit0