다음을 통해 공유


FWPM_FILTER_CONDITION0 구조체(fwpmtypes.h)

FWPM_FILTER_CONDITION0 구조체는 작업을 수행하려면 true여야 하는 필터 조건을 표현합니다.

구문

typedef struct FWPM_FILTER_CONDITION0_ {
  GUID                 fieldKey;
  FWP_MATCH_TYPE       matchType;
  FWP_CONDITION_VALUE0 conditionValue;
} FWPM_FILTER_CONDITION0;

멤버

fieldKey

테스트할 필드의 GUID입니다. 사용 가능한 키는 조건 식별자 필터링 아래에 나열됩니다.

matchType

수행할 일치 형식을 지정하는 FWP_MATCH_TYPE 값입니다.

conditionValue

필드와 일치하는 값을 포함하는 FWP_CONDITION_VALUE0 구조체입니다.

설명

필드 GUID는 레이어 내에서만 고유하므로 필드를 고유하게 식별하려면 필드 GUID와 계층 GUID가 모두 필요합니다.

의 데이터 형식

자세한 호환성 규칙에 대한 FWP_MATCH_TYPE.

FWPM_FILTER_CONDITION0 FWPM_FILTER_CONDITION 특정 구현입니다. 자세한 내용은 WFP Version-Independent 이름 및 특정 버전의 Windows 대상 지정 을 참조하세요.

예제

다음 C++ 예제에서는 필터를 초기화하고 조건을 추가하는 방법을 보여줍니다.

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

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

// Some application to use for filter testing.
#define FILE0_PATH L"C:\\Program Files\\AppDirectory\\SomeApplication.exe"

void main()
{
    FWP_BYTE_BLOB *fwpApplicationByteBlob;
    FWPM_FILTER0 fwpFilter;
    FWPM_FILTER_CONDITION0 fwpConditions[4];
    int conCount = 0;
    DWORD result = ERROR_SUCCESS; 

    fwpApplicationByteBlob = (FWP_BYTE_BLOB*) malloc(sizeof(FWP_BYTE_BLOB));
    
    printf("Retrieving application identifier for filter testing.\n"); 
    result = FwpmGetAppIdFromFileName0(FILE0_PATH, &fwpApplicationByteBlob);
    if (result != ERROR_SUCCESS)
    {
        printf("FwpmGetAppIdFromFileName failed (%d).\n", result);
        return;
    }

      // Application identifier filter condition.
      fwpConditions[conCount].fieldKey = FWPM_CONDITION_ALE_APP_ID;
      fwpConditions[conCount].matchType = FWP_MATCH_EQUAL;
      fwpConditions[conCount].conditionValue.type = FWP_BYTE_BLOB_TYPE;
      fwpConditions[conCount].conditionValue.byteBlob = fwpApplicationByteBlob;
            
      ++conCount;

      // TCP protocol filter condition
      fwpConditions[conCount].fieldKey = FWPM_CONDITION_IP_PROTOCOL;
      fwpConditions[conCount].matchType = FWP_MATCH_EQUAL;
      fwpConditions[conCount].conditionValue.type = FWP_UINT8;
      fwpConditions[conCount].conditionValue.uint8 = IPPROTO_TCP;

      ++conCount;

      // Add conditions and condition count to a filter.
      memset(&fwpFilter, 0, sizeof(FWPM_FILTER0));

      fwpFilter.numFilterConditions = conCount;
      if (conCount > 0)
        fwpFilter.filterCondition = fwpConditions;

      // Finish initializing filter...

    return;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 fwpmtypes.h

추가 정보

FWP_CONDITION_VALUE0

FWP_MATCH_TYPE

Windows 필터링 플랫폼 API 구조