Registrando textos explicativos com o Mecanismo de Filtro

Depois que um driver de texto explicativo tiver criado um objeto de dispositivo, ele poderá registrar seus textos explicativos com o mecanismo de filtro. Um driver de texto explicativo pode registrar seus textos explicativos com o mecanismo de filtro a qualquer momento, mesmo que o mecanismo de filtro não esteja em execução no momento. Para registrar um texto explicativo com o mecanismo de filtro, um driver de texto explicativo chama a função FwpsCalloutRegister0 . Por exemplo:

// Prototypes for the callout's callout functions
VOID NTAPI
 ClassifyFn(
    IN const FWPS_INCOMING_VALUES0  *inFixedValues,
    IN const FWPS_INCOMING_METADATA_VALUES0  *inMetaValues,
    IN OUT VOID  *layerData,
    IN const FWPS_FILTER0  *filter,
    IN UINT64  flowContext,
    IN OUT FWPS_CLASSIFY_OUT0  *classifyOut
    );

NTSTATUS NTAPI
 NotifyFn(
 IN FWPS_CALLOUT_NOTIFY_TYPE notifyType,
    IN const GUID  *filterKey,
    IN const FWPS_FILTER0  *filter
    );

VOID NTAPI
 FlowDeleteFn(
    IN UINT16  layerId,
    IN UINT32  calloutId,
    IN UINT64  flowContext
    );

// Callout registration structure
const FWPS_CALLOUT0 Callout =
{
 { ... }, // GUID key identifying the callout
  0,       // Callout-specific flags (none set here)
 ClassifyFn,
 NotifyFn,
 FlowDeleteFn
};

// Variable for the run-time callout identifier
UINT32 CalloutId;

NTSTATUS
 DriverEntry(
    IN PDRIVER_OBJECT DriverObject,
    IN PUNICODE_STRING RegistryPath
    )
{
  PDEVICE_OBJECT deviceObject;
  NTSTATUS status;

  ...

 status =
 FwpsCalloutRegister0(
 deviceObject,
      &Callout,
      &CalloutId
      );

  ...

 return status;
}

Se a chamada para a função FwpsCalloutRegister0 for bem-sucedida, a variável apontada pelo último parâmetro conterá o identificador de tempo de execução para o texto explicativo. Esse identificador de tempo de execução corresponde ao GUID especificado para a chave de texto explicativo.

Um único driver de texto explicativo pode implementar mais de um texto explicativo. Se um driver de texto explicativo implementar mais de um texto explicativo, ele chamará a função FwpsCalloutRegister0 uma vez para cada texto explicativo compatível para registrar cada texto explicativo com o mecanismo de filtro.

classifyFn