Funzione FwpsAllocateDeepCloneNetBufferList0 (fwpsk.h)
La funzione FwpsAllocateDeepCloneNetBufferList0 alloca una struttura NET_BUFFER_LIST che è un clone profondo di una struttura NET_BUFFER_LIST esistente.
Sintassi
NTSTATUS FwpsAllocateDeepCloneNetBufferList0(
[in, out] NET_BUFFER_LIST *originalNetBufferList,
[in, optional] NDIS_HANDLE netBufferListPoolHandle,
[in, optional] NDIS_HANDLE netBufferPoolHandle,
[out] NET_BUFFER_LIST **netBufferList
);
Parametri
[in, out] originalNetBufferList
Puntatore alla struttura NET_BUFFER_LIST originale clonata.
[in, optional] netBufferListPoolHandle
Handle del pool NET_BUFFER_LIST ottenuto da una chiamata precedente alla funzione NdisAllocateNetBufferListPool. Questo parametro è facoltativo e può essere NULL.
[in, optional] netBufferPoolHandle
Handle del pool NET_BUFFER_LIST ottenuto da una chiamata precedente alla funzione NdisAllocateNetBufferPool. Questo parametro è facoltativo e può essere NULL.
[out] netBufferList
Puntatore a una variabile che riceve un puntatore alla struttura di clonazione completa NET_BUFFER_LIST.
Valore restituito
La funzione FwpsAllocateDeepCloneNetBufferList0 restituisce uno dei codici NTSTATUS seguenti.
Codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | La struttura di clonazione completa NET_BUFFER_LIST è stata allocata correttamente. |
Altri codici di stato | Si è verificato un errore. |
Osservazioni
Un driver callout chiama la funzione FwpsAllocateDeepCloneNetBufferList0 per allocare una struttura NET_BUFFER_LIST clone profonda di una struttura di NET_BUFFER_LIST esistente.
Questa funzione è un wrapper intorno alla funzione NdisAllocateCloneNetBufferList, ma è specializzata per l'uso da parte del WFP funzioni di inserimento di pacchetti.
Se la struttura di NET_BUFFER_LIST clone profondo deve avere attributi associati a un pool specifico, il driver del callout deve specificare l'handle del pool nel NetBufferListPoolHandle o parametro NetBufferPoolHandle. Se questi parametri sono NULL, viene usato il pool predefinito preallocato da NDIS.
La struttura di clonazione completa NET_BUFFER_LIST descrive gli stessi dati descritti dalla struttura NET_BUFFER_LIST originale. La funzione FwpsAllocateDeepCloneNetBufferList0 copia i dati descritti dagli ELENCHI di dati originali in nuovi buffer di dati. La struttura di clonazione NET_BUFFER_LIST include una struttura di NET_BUFFER_LIST_CONTEXT iniziale.
Questa funzione imposta il membro ParentNetBufferList della struttura NET_BUFFER_LIST clone appena creata in modo che punti alla struttura NET_BUFFER_LIST padre. Il membro childRefCount della struttura padre viene incrementato di 1.
Un driver callout può modificare la struttura di clonazione NET_BUFFER_LIST e inserirla nello stack di rete al posto della struttura originale NET_BUFFER_LIST chiamando le funzioni di inserimento di pacchetti . Dopo che i dati descritti dalla struttura di clonazione NET_BUFFER_LIST sono stati inseriti correttamente nello stack di rete, il driver callout libera la struttura di clonazione NET_BUFFER_LIST chiamando la funzionefwpsFreeCloneNetBufferList0.
Un driver di callout può inserire o sostituire singoli buffer net (NET_BUFFER) o MDL all'interno del clone profondo NET_BUFFER_LIST. Il driver deve annullare queste modifiche prima di chiamare la funzione FwpsFreeCloneNetBufferList0.
Linee guida per la gestione dei pacchetti clonati
Un driver callout non deve contenere pacchetti clonati per un periodo illimitato. Un pacchetto clonato può interferire con le operazioni di risparmio energia in un computer inattiva.
L'uso previsto per pacchetti clonati profondi nel WFP è ottenere chiarimenti da un'applicazione in modalità utente o da un'altra operazione relativamente veloce che richiede un pacchetto indipendente dall'originale. Il driver callout non deve contenere pacchetti clonati durante l'attesa dell'input dell'utente, l'autorizzazione del servizio Web o qualsiasi altra operazione che potrebbe richiedere una quantità arbitraria di tempo.
I driver callout devono restituire sempre pacchetti mantenuti il più rapidamente possibile.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | WIP build 25324 |
piattaforma di destinazione | Universale |
intestazione | fwpsk.h (include Fwpsk.h) |
libreria | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |