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 dati di rete sono indicati nel WFP come elenchi di buffer NDIS (NET_BUFFER_LIST). Il Successivo membro della struttura NET_BUFFER_LIST può essere utilizzato per descrivere un catena di di elenchi di buffer net. WFP indica solo un singolo elenco di buffer di rete per i callout (ovvero netBufferList->Next == NULL), ad eccezione dei casi seguenti:
WFP può indicare catene di elenchi di buffer della rete ai callout dal livello stream.
WFP indica le catene di elenchi buffer di rete per i callout quando classifica i gruppi di frammenti di pacchetti IP sul percorso di inoltro ai callout. Ogni elenco di buffer net all'interno della catena descrive un singolo frammento.
Sebbene un elenco di buffer net possa descrivere un intero pacchetto, per diversi tipi di livelli, WFP indica gli elenchi di buffer net per i callout con offset diversi dall'inizio dell'intestazione IP. Ad esempio, a livello di rete in ingresso, l'elenco di buffer net inizia dopo l'intestazione IP, mentre a livello di trasporto in ingresso l'elenco di buffer net inizia dopo l'intestazione di trasporto. Le intestazioni IP e di trasporto sono sempre descritte dalla prima struttura NET_BUFFER all'interno di un elenco di buffer di rete.
Gli offset negli elenchi di buffer di rete sono indicati ai callout utilizzando i membri ipHeaderSize e transportHeaderSize della struttura FWPS_INCOMING_METADATA_VALUES0. I callout possono usare le funzioni NDIS NdisRetreatNetBufferDataStart e NdisAdvanceNetBufferDataStart per regolare l'offset degli elenchi di buffer di rete indicati. In questo caso, tuttavia, il callout deve annullare la regolazione dell'offset prima di restituire dalla funzione classifyFn.
In una chiamata alla funzione classifyFn per i dati in uscita, un NET_BUFFER_LIST può contenere più di una struttura NET_BUFFER, ognuna delle quali descrive un pacchetto IP. Se alcuni pacchetti (ad esempio, net buffer) in un elenco di buffer di rete sono accettabili, ma altri non lo sono, un driver callout deve eseguire le operazioni seguenti:
Clonare e bloccare l'intero elenco di buffer di rete.
Creare un nuovo elenco di buffer di rete che descriva il sottoinsieme accettabile di buffer di rete.
Inserire nuovamente il nuovo elenco di buffer net nel percorso di invio.
In alternativa, il callout può scollegare i buffer net indesiderati dall'elenco net buffer e inserire nuovamente l'elenco di buffer net modificato nel percorso di invio. Tuttavia, in questo caso, il driver callout deve annullare questa modifica all'elenco di buffer net clonato prima di chiamare la funzione FwpsFreeCloneNetBufferList0. Il driver di chiamata deve anche salvare le informazioni originali sul collegamento del buffer di rete come parte dei propri dati di stato.
Per altre informazioni sugli offset dei dati usati dal WFP, vedere posizioni degli offset dei dati.
Nota I callout che funzionano con pacchetti ESP IPSec decrittografati devono usare la lunghezza dei dati della struttura NET_BUFFER anziché la dei dati MDL per determinare la lunghezza del pacchetto. Per ottenere la lunghezza dei dati, utilizzare la macro NET_BUFFER_DATA_LENGTH. Per altre informazioni, vedere Developing IPsec-Compatible Callout Drivers.