Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I tipi di callout seguenti possono essere usati con il WFP:
callout di ispezione in linea
Questo tipo di callout restituisce sempre FWP_ACTION_CONTINUE dalla funzione classifyFn e non modifica il traffico di rete in alcun modo. Un callout che raccoglie statistiche di rete è un esempio di questo tipo di callout.
Per questo tipo di callout, il tipo di azione del filtro (specificato dal tipo membro della struttura FWPS_ACTION0) deve essere impostato su FWP_ACTION_CALLOUT_INSPECTION.
Richiamo di ispezione fuori banda
Questo tipo di callout non modifica il traffico di rete. Al contrario, rinvia qualsiasi ispezione da eseguire all'esterno della funzione classifyFn mettendo i dati indicati in sospeso e quindi reinserendo i dati in sospeso nello stack TCP/IP con una delle funzioni di inserimento di pacchetti . Pending viene implementato clonando innanzitutto i dati indicati, seguito dalla restituzione di FWP_ACTION_BLOCK dalla funzione classifyFn che ha impostato il bit FWPS_CLASSIFY_OUT_FLAG_ABSORB.
callout di modifica inline
Questo tipo di callout modifica il traffico di rete creando prima un clone dei dati indicati, quindi modificando il clone e infine inserendo nuovamente il clone modificato nello stack TCP/IP dalla funzione di classificazioneFn . Questo tipo di callout restituisce FWP_ACTION_BLOCK anche dalla funzione classifyFn che ha il bit FWPS_CLASSIFY_OUT_FLAG_ABSORB impostato.
Il tipo di azione di filtro per questo tipo di callout deve essere impostato su FWP_ACTION_CALLOUT_TERMINATING.
callout di modifica fuori banda
Questo tipo di callout fa prima riferimento al pacchetto indicato usando la funzione FwpsReferenceNetBufferList0 con il parametro intentToModify impostato su TRUE. Il callout restituisce quindi FWP_ACTION_BLOCK con il bit FWPS_CLASSIFY_OUT_FLAG_ABSORB impostato dalla funzione classifyFn. Quando il pacchetto è pronto per essere modificato all'esterno di classifyFn, il callout clona il pacchetto di riferimento (non appena viene clonato, il pacchetto originale può quindi essere dereferenziato). Il callout modifica quindi il clone e inserisce nuovamente il pacchetto modificato nello stack TCP/IP.
Il tipo di azione di filtro per questo tipo di callout deve essere impostato su FWP_ACTION_CALLOUT_TERMINATING.
Callout di reindirizzamento
Per altre informazioni su questo tipo di callout, vedere Using Bind or Connect Redirection.
Ci sono due tipi di callout di reindirizzamento:
- Una chiamata di reindirizzamento delle associazioni consente al driver callout di modificare l'indirizzo locale e la porta locale di un socket.
- Un callout di reindirizzamento della connessione consente al driver callout di modificare l'indirizzo remoto e la porta remota di una connessione.
Il tipo di azione di filtro per questo tipo di callout deve essere impostato su FWP_ACTION_PERMIT.
Per altre informazioni su FWPS_CLASSIFY_OUT_FLAG_ABSORB, vedere FWPS_CLASSIFY_OUT0. Questo segnale non è valido in nessun livello di eliminazione WFP. La restituzione di FWP_ACTION_BLOCK con il flag FWPS_CLASSIFY_OUT_FLAG_ABSORB impostato nella funzione classifyFn fa sì che il pacchetto venga scartato silenziosamente, in modo che il pacchetto non raggiunga alcun livello di eliminazione WFP, né causi la generazione di eventi di audit.
Anche se gli elenchi di buffer di rete clonati possono essere modificati, ad esempio aggiungendo o rimuovendo buffer di rete o MDL o entrambi, i callout devono annullare tali modifiche prima di chiamare la funzione FwpsFreeCloneNetBufferList0.
Per coesistere con altri callout che eseguono l'ispezione dei pacchetti, la modifica dei pacchetti o il reindirizzamento della connessione, prima che un pacchetto venga sospeso con il meccanismo di riferimento/clone-drop-reinject, un callout deve eliminare forzatamente il pacchetto originale cancellando il flag FWPS_RIGHT_ACTION_WRITE nel membro dei diritti della struttura FWPS_CLASSIFY_OUT0 restituita dalla funzione classifyFn. Se il flag FWPS_RIGHT_ACTION_WRITE viene impostato quando viene chiamato classifyFn (il che significa che il pacchetto potrebbe essere sospeso e modificato in un secondo momento), il callout non deve sospendere l'indicazione né modificare il tipo di azione corrente; e deve attendere che un callout di peso maggiore inietti il clone che potrebbe essere stato modificato.
Il flag FWPS_RIGHT_ACTION_WRITE deve essere impostato ogni volta che un callout sospende una classificazione. Il driver del callout dovrebbe controllare il flag FWPS_RIGHT_ACTION_WRITE per verificare se il callout ha i diritti necessari per restituire un'azione. Se questo flag non è impostato, il tuo callout può comunque restituire un'azione FWP_ACTION_BLOCK per vietare un'azione FWP_ACTION_PERMIT che è stata restituita da un callout precedente. Nell'esempio illustrato in Uso di un callout per l'ispezione approfondita, la funzione viene chiusa solo se il flag non è impostato.
La funzione fwpsPendOperation0 viene utilizzata per mettere in sospeso i pacchetti provenienti dai livelli di filtro di gestione FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXXo FWPM_LAYER_ALE_AUTH_CONNECT_XXX.
La funzionefwpsPendClassify0viene usata per creare pacchetti provenienti dai livelli di filtro in fase di esecuzione seguenti :
FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6