다음을 통해 공유


WFP API

WFP(Windows 필터링 플랫폼) API는 다음 구성 요소로 나뉩니다.

구성 요소 Description 헤더 파일
설명선 API (FWPS)${REMOVE}$
설명선에서 사용하는 데이터 형식입니다. 참고 이러한 데이터 형식은 Microsoft DDK(Windows 드라이버 개발 키트)에 설명되어 있습니다.
fwpstypes.h
fwpstypes.idl
설명선 구현에 사용되는 함수열거형 형식입니다. 참고 이러한 함수 및 열거형 형식은 DDK에 설명되어 있습니다.
fwpsu.h
fwpsk.h
IKE/AuthIP API(IKEEXT)${REMOVE}$
IKE 및 AuthIP MM(기본 모드) 정책 및 보안 연결을 관리하는 데 사용되는 열거형 형식구조체입니다.
iketypes.h
iketypes.idl
IKE 및 AuthIP MM 정책 및 보안 연결을 관리하는 데 사용되는 함수입니다.
fwpmu.h
fwpmk.h
IPsec API(IPSEC)${REMOVE}$
IPsec 정책 및 보안 연결을 관리하는 데 사용되는 열거형 형식구조체입니다.
ipsectypes.h
ipsectypes.idl
IPsec 정책 및 보안 연결을 관리하는 데 사용되는 함수입니다.
fwpmu.h
fwpmk.h
관리 API(FWPM)${REMOVE}$
필터 엔진을 관리하는 데 사용되는 열거형 형식구조체입니다.
fwpmtypes.h
fwpmtypes.idl
필터 엔진을 관리하는 데 사용되는 함수입니다. 이러한 함수는 다음 작업을 수행하는 데 사용됩니다.
  • 필터, 공급자 및 설명선 설정 및 쿼리
  • IPsec 통계를 검색합니다.
  • Windows 필터링 플랫폼을 구성합니다.
fwpmu.h
fwpmk.h
공유 API(FWP) Windows 필터링 플랫폼에서 공유 되는 기본 열거형 형식구조 체입니다.
fwptypes.h
fwptypes.idl

데이터 형식 이름은 모두 대문자와 밑줄로 구분됩니다. 이름은 항상 구성 요소 그룹(예: FWPM_PROVIDER0)을 식별하는 접두사로 시작합니다.

함수 이름은 대/소문자와 대/소문자 구분이 혼합되어 있습니다. 이름은 항상 FwpmProviderContextAdd0과 같은 구성 요소 그룹을 식별하는 접두사로 시작됩니다.

대부분의 데이터 및 함수 이름은 버전 번호로 끝납니다. fwpvi.h 헤더 파일은 버전 독립적 데이터 및 함수 이름을 지정된 운영 체제에 사용하기에 적합한 버전에 매핑합니다. 자세한 내용은 WFP Version-Independent 이름 및 특정 버전의 Windows 대상 지정을 참조하세요.

각 구성 요소는 단독으로 실행되지 않습니다. 예를 들어 MM(IKE 기본 모드) 정책은 IKEEXT 구성 요소에 정의되어 있지만 공급자 컨텍스트에 저장되며 둘 다 FWPM API 구성 요소에 있는 필터와 연결됩니다.

공용 헤더 파일 User-Mode 및 Kernel-Mode

대부분의 WFP 함수는 사용자 모드 또는 커널 모드에서 호출할 수 있습니다. 그러나 사용자 모드 함수는 Win32 오류 코드를 나타내는 DWORD 값을 반환하는 반면 커널 모드 함수는 NT 상태 코드를 나타내는 NTSTATUS 값을 반환합니다. 따라서 함수 이름과 의미 체계는 사용자 모드와 커널 모드 간에 동일하지만 함수 서명은 동일하지 않습니다. 이렇게 하려면 함수 프로토타입에 대해 별도의 사용자 모드 및 커널 모드 특정 헤더가 필요합니다. 사용자 모드 헤더 파일 이름은 "u"로 끝나고 커널 모드 헤더 파일 이름은 "k"로 끝납니다.

다음 표에서는 WFP 함수를 정의하는 Win32 헤더 파일을 나열합니다.

헤더 파일 Description
fwpmk.h FWPM, IPsec 및 IKEEXT 구성 요소에 대한 커널 모드 함수 프로토타입입니다. DDK에서만 사용할 수 있습니다.
fwpmu.h FWPM, IPsec 및 IKEEXT 구성 요소에 대한 사용자 모드 함수 프로토타입. Microsoft Windows SDK(소프트웨어 개발 키트)에서만 사용할 수 있습니다.
fwpsk.h FWPS 구성 요소에 대한 커널 모드 함수 프로토타입 및 열거 형식입니다. DDK에서만 사용할 수 있습니다.
fwpsu.h FWPS 구성 요소에 대한 사용자 모드 함수 프로토타입 및 열거 형식입니다. Windows SDK에서만 사용할 수 있습니다. 참고 사용자 모드 FWPS 열거 형식은 커널 모드 FWPS 열거 형식과 동일합니다. 결과적으로 이러한 형식은 DDK에만 문서화됩니다.
참고 사용자 모드 FWPS 함수 프로토타입은 반환 코드를 제외하고 커널 모드 FWPS 함수 프로토타입과 동일합니다. 사용자 모드 FWPS 함수는 DWORD를 반환하는 반면 커널 모드 FWPS 함수는 NTSTATUS를 반환합니다. 결과적으로 이러한 함수는 DDK에만 문서화됩니다.

모든 사용자 모드 함수는 fwpuclnt.dll 내보냅니다. 모든 커널 모드 함수는 fwpkclnt.sys 내보냅니다.

FWPM(관리) 및 설명선(FWPS) 데이터 형식

애플리케이션 또는 드라이버에서 필터 또는 설명선 추가와 같은 관리 작업에 사용되는 대부분의 FWPM 데이터 형식에는 FWPS에 해당합니다. FWPS 데이터 형식은 분류를 위한 설명선 루틴의 컨텍스트에서 네트워크 트래픽의 실제 필터링 중에 사용됩니다.

예를 들어 특정 필터링 엔진 계층에 필터를 추가하려면 프로그래머가 와 같은 filter.layerKey = FWPM_LAYER_INBOUND_IPPACKETFWPM 형식을 사용해야 합니다. 설명선이 호출되는 계층을 검사 프로그래머가 해당 FWPS 형식 if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET)을 사용해야 합니다.

FWPM 데이터 형식에 대응하는 일부 FWPS는 원래 FWPM 데이터 형식을 확장하고 있습니다. 예를 들어 많은 필터링 엔진 계층에서 필터 조건을 추가하려면 프로그래머가 필터링 엔진 계층에 관계없이 를 filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL 지정합니다. 필터 조건 값을 찾기 위해 프로그래머가 계층별 FWPS 형식(예: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL])을 지정합니다.

FWPS 데이터 형식은 일반적으로 FWPM 데이터 형식보다 작습니다. 예를 들어 FWPM 필터링 계층 식별자는GUID(16바이트)인 반면 FWPS 필터링 계층 식별자는UINT16 (16비트)입니다. FWPS 데이터 형식의 크기가 작을수록 정수 비교가 실시간 트래픽에 대한 GUID 비교보다 크므로 시스템 성능이 향상됩니다. 또한 FWPS 형식은 모두 필터 관리를 위해 커널에서 사용되는 반면 FWPM 형식은 사용자 모드로 저장되어 서로 다른 계층을 관리하기 때문에 커널 메모리가 효율적으로 사용됩니다.

WFP API 개체 모델

WFP API 개체 관리