Función FwpsAllocateDeepCloneNetBufferList0 (fwpsk.h)

La función FwpsAllocateDeepCloneNetBufferList0 asigna una estructura NET_BUFFER_LIST que es un clon profundo de una estructura de NET_BUFFER_LIST existente.

Sintaxis

NTSTATUS FwpsAllocateDeepCloneNetBufferList0(
  [in, out]      NET_BUFFER_LIST *originalNetBufferList,
  [in, optional] NDIS_HANDLE     netBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     netBufferPoolHandle,
  [out]          NET_BUFFER_LIST **netBufferList
);

Parámetros

[in, out] originalNetBufferList

Puntero a la estructura NET_BUFFER_LIST original que se va a clonar.

[in, optional] netBufferListPoolHandle

Identificador de grupo de NET_BUFFER_LIST que se obtuvo de una llamada anterior a la funciónNdisAllocateNetBufferListPool. Este parámetro es opcional y se puede NULL.

[in, optional] netBufferPoolHandle

Identificador de grupo de NET_BUFFER_LIST que se obtuvo de una llamada anterior a la funciónNdisAllocateNetBufferPool. Este parámetro es opcional y se puede NULL.

[out] netBufferList

Puntero a una variable que recibe un puntero a la estructura del clon profundo NET_BUFFER_LIST.

Valor devuelto

La función FwpsAllocateDeepCloneNetBufferList0 devuelve uno de los siguientes códigos NTSTATUS.

Código devuelto Descripción
STATUS_SUCCESS La estructura de NET_BUFFER_LIST clonación profunda se asignó correctamente.
otros códigos de estado Error.

Observaciones

Un controlador de llamada llama a la función FwpsAllocateDeepCloneNetBufferList0 para asignar una estructura de clonación profunda NET_BUFFER_LIST de una estructura NET_BUFFER_LIST existente.

Esta función es un contenedor alrededor de la función de NdisAllocateCloneNetBufferList, pero está especializada para su uso por parte de PMA funciones de inyección de paquetes.

Si el clon profundo NET_BUFFER_LIST estructura debe tener atributos asociados a un grupo específico, el controlador de llamada debe especificar el identificador de grupo en el NetBufferListPoolHandle o parámetro NetBufferPoolHandle. Si estos parámetros se NULL, se usa el grupo predeterminado asignado previamente por NDIS.

La estructura de NET_BUFFER_LIST clonación profunda describe los mismos datos descritos por la estructura de NET_BUFFER_LIST original. La función FwpsAllocateDeepCloneNetBufferList0 copia los datos descritos por los MDL originales en nuevos búferes de datos. La estructura del NET_BUFFER_LIST clonado incluye una estructura de NET_BUFFER_LIST_CONTEXT inicial.

Esta función establece el miembro ParentNetBufferList del NET_BUFFER_LIST de clonación recién creado para que apunte a la estructura de NET_BUFFER_LIST primaria. El miembro childRefCount de de la estructura primaria se incrementa 1.

Un controlador de llamada puede modificar el clon NET_BUFFER_LIST estructura e insertarlo en la pila de red en lugar de la estructura de NET_BUFFER_LIST original llamando a las funciones de inserción de paquetes . Después de insertar correctamente los datos descritos por la estructura del clon NET_BUFFER_LIST en la pila de red, el controlador de llamada libera la estructura NET_BUFFER_LIST clonada llamando a la función FwpsFreeCloneNetBufferList0.

Un controlador de llamada puede insertar o reemplazar búferes netos individuales (NET_BUFFER) o MDL dentro del clon profundo NET_BUFFER_LIST. El controlador debe deshacer estas modificaciones antes de llamar a la función FwpsFreeCloneNetBufferList0.

Directrices para administrar paquetes clonados

Un controlador de llamada no debe contener paquetes clonados indefinidamente. Un paquete clonado puede interferir con las operaciones de administración de energía en un equipo inactivo.

El uso previsto para paquetes clonados profundos en EL PMA es obtener aclaración de una aplicación en modo de usuario u otra operación relativamente rápida que necesita un paquete independiente del original. El controlador de llamada no debe contener paquetes clonados mientras espera la entrada del usuario, la autorización del servicio web o cualquier otra operación que pueda tardar un tiempo arbitrario.

Los controladores de llamada siempre deben devolver paquetes mantenidos lo antes posible.

Requisitos

Requisito Valor
cliente mínimo admitido Compilación 25324 de WIP
de la plataforma de destino de Universal
encabezado de fwpsk.h (incluya Fwpsk.h)
biblioteca de Fwpkclnt.lib
irQL <= DISPATCH_LEVEL

Consulte también

fwpsFreeCloneNetBufferList0

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

funciones de inyección de paquetes