Share via


estructura de FWPM_FILTER_CONDITION0 (fwpmtypes.h)

La estructura FWPM_FILTER_CONDITION0 expresa una condición de filtro que debe ser verdadera para que se tome la acción.

Sintaxis

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

Miembros

fieldKey

GUID del campo que se va a probar. Las claves disponibles aparecen en Filtering Condition Identifiers (Identificadores de condición de filtrado).

matchType

Valor de FWP_MATCH_TYPE que especifica el tipo de coincidencia que se va a realizar.

conditionValue

Estructura FWP_CONDITION_VALUE0 que contiene el valor con el que debe coincidir el campo.

Comentarios

Los GUID de campo solo son únicos dentro de una capa, por lo que tanto el GUID de campo como el GUID de capa son necesarios para identificar de forma única un campo.

El tipo de datos de

FWP_MATCH_TYPE para obtener reglas de compatibilidad detalladas.

FWPM_FILTER_CONDITION0 es una implementación específica de FWPM_FILTER_CONDITION. Para obtener más información, consulte NOMBRES de PMA Version-Independent y versiones específicas de destino de Windows .

Ejemplos

En el siguiente ejemplo de C++ se muestra cómo inicializar y agregar condiciones a un filtro.

#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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado fwpmtypes.h

Consulte también

FWP_CONDITION_VALUE0

FWP_MATCH_TYPE

Estructuras de api de plataforma de filtrado de Windows