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

반환 코드/값 설명
ERROR_SUCCESS
0
하위 계층이 추가되었습니다.
FWP_E_* 오류 코드
0x80320001 — 0x80320039
WFP(Windows 필터링 플랫폼) 관련 오류입니다. 자세한 내용은 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
라이브러리 Fwpuclnt.lib
DLL Fwpuclnt.dll

추가 정보

FWPM_SUBLAYER0

관리 함수

WFP 함수