次の方法で共有


FwpmSubLayerAdd0 関数 (fwpmu.h)

FwpmSubLayerAdd0 関数は、新しいサブレイヤーをシステムに追加します。

構文

DWORD FwpmSubLayerAdd0(
  [in]           HANDLE               engineHandle,
  [in]           const FWPM_SUBLAYER0 *subLayer,
  [in, optional] PSECURITY_DESCRIPTOR sd
);

パラメーター

[in] engineHandle

型: HANDLE

フィルター エンジンへの開いているセッションを処理します。 FwpmEngineOpen0 を呼び出して、フィルター エンジンへのセッションを開きます。

[in] subLayer

種類: FWPM_SUBLAYER0*

追加するサブレイヤー。

[in, optional] sd

種類: PSECURITY_DESCRIPTOR

サブレイヤー オブジェクトのセキュリティ情報。

戻り値

型: DWORD

リターン コード/値 Description
ERROR_SUCCESS
0
サブレイヤーが正常に追加されました。
FWP_E_* エラー コード
0x80320001 — 0x80320039
Windows フィルタリング プラットフォーム (WFP) 固有のエラー。 詳細については、「 WFP エラー コード 」を参照してください。
RPC_* エラー コード
0x80010001 — 0x80010122
リモートまたはローカルのファイアウォール エンジンとの通信に失敗しました。

注釈

呼び出し元が null セキュリティ記述子を提供する場合、システムは既定のセキュリティ記述子を割り当てます。

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

呼び出し元は サブレイヤーのコンテナーにFWPM_ACTRL_ADDアクセスし、プロバイダーへのアクセス をFWPM_ACTRL_ADD_LINK する必要があります (存在する場合)。 詳細については、「Access Control」を参照してください。

FwpmSubLayerAdd0 は、FwpmSubLayerAdd の特定の実装です。 詳細については、「 WFP Version-Independent 名と特定のバージョンの Windows を対象 とする」を参照してください。

次の C++ の例は、サブレイヤー オブジェクトの初期化と、サブレイヤー キーをフィルター オブジェクトに追加する方法を示しています。

#include <windows.h>
#include <fwpmu.h>
#include <rpc.h>
#include <stdio.h>

#pragma comment(lib, "Fwpuclnt.lib")
#pragma comment(lib, "Rpcrt4.lib")

void main()
{
    FWPM_FILTER0    fwpFilter;
    FWPM_SUBLAYER0    fwpFilterSubLayer;
    HANDLE engineHandle = NULL;     
    DWORD  result = ERROR_SUCCESS; 
    RPC_STATUS rpcStatus = RPC_S_OK;
     
    memset(&fwpFilterSubLayer, 0, sizeof(fwpFilterSubLayer));
    rpcStatus = UuidCreate(&fwpFilterSubLayer.subLayerKey);
          
    if (RPC_S_OK != rpcStatus)
    {
           printf("UuidCreate failed (%d).\n", rpcStatus);
           return;
    }

    result = FwpmEngineOpen0( NULL, RPC_C_AUTHN_WINNT, NULL, NULL, &engineHandle );
    if (result != ERROR_SUCCESS)
    {
        printf("FwpmEngineOpen0 failed.\n");
        return;
    }

    fwpFilterSubLayer.displayData.name = L"MyFilterSublayer";
    fwpFilterSubLayer.displayData.description = L"My filter sublayer";
    fwpFilterSubLayer.flags = 0;
    fwpFilterSubLayer.weight = 0x100;
            
    printf("Adding filter sublayer.\n");
      result = FwpmSubLayerAdd0(engineHandle, &fwpFilterSubLayer, NULL);

      if (result != ERROR_SUCCESS)
      {           
           printf("FwpmSubLayerAdd0 failed (%d).\n", result);
           return;
    }

    // Add sublayer key to a filter.
    memset(&fwpFilter, 0, sizeof(FWPM_FILTER0));

    if (&fwpFilterSubLayer.subLayerKey != NULL)
        fwpFilter.subLayerKey = fwpFilterSubLayer.subLayerKey;

    // Finish initializing filter...

    return;
}

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー fwpmu.h
Library Fwpuclnt.lib
[DLL] Fwpuclnt.dll

こちらもご覧ください

FWPM_SUBLAYER0

管理機能

WFP 関数