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.