Función FwpsAllocateCloneNetBufferList0 (fwpsk.h)

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

NotaFwpsAllocateCloneNetBufferList0 es una versión específica de FwpsAllocateCloneNetBufferList. Para obtener más información, vea NOMBRES DE Version-Independent DE PMA y versiones específicas de Windows dirigidas a destinatarios.
 

Sintaxis

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

Parámetros

[in, out] originalNetBufferList

Puntero a la estructura de 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 . Función NdisAllocateNetBufferListPool . Este parámetro es opcional y puede ser NULL.

[in, optional] netBufferPoolHandle

Identificador de grupo de NET_BUFFER que se obtuvo de una llamada anterior a la función NdisAllocateNetBufferPool . Este parámetro es opcional y puede ser NULL.

[in] allocateCloneFlags

Actualmente no hay marcas definidas para esta función. Los controladores de llamada deben establecer este parámetro en cero.

[out] netBufferList

Puntero a una variable que recibe un puntero a la estructura de NET_BUFFER_LIST clonada.

Valor devuelto

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

Código devuelto Descripción
STATUS_SUCCESS
La estructura del clon NET_BUFFER_LIST se asignó correctamente.
Otros códigos de estado
Se produjo un error.

Comentarios

Un controlador de llamada llama a la función FwpsAllocateCloneNetBufferList0 para asignar una estructura de NET_BUFFER_LIST clonada de una estructura de NET_BUFFER_LIST existente.

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

Si el clon 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 parámetro NetBufferListPoolHandle o NetBufferPoolHandle . Si estos parámetros son NULL, se usa el grupo predeterminado asignado previamente por NDIS.

La estructura de NET_BUFFER_LIST clonada describe los mismos datos descritos por la estructura de NET_BUFFER_LIST original. La función FwpsAllocateCloneNetBufferList0 no copia los datos descritos por los MDL originales en nuevos búferes de datos. En su lugar, el clon NET_BUFFER_LIST estructura hace referencia a los búferes de datos originales. La estructura del NET_BUFFER_LIST clonado no incluye una inicial NET_BUFFER_LIST_CONTEXT estructura.

Esta función establece el miembro ParentNetBufferList del clon recién creado NET_BUFFER_LIST estructura para que apunte a la estructura de NET_BUFFER_LIST primaria. El miembro ChildRefCount de la estructura primaria se incrementa en 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. Una vez que los datos descritos por la estructura del clon NET_BUFFER_LIST se han insertado correctamente en la pila de red, el controlador de llamada libera el clon NET_BUFFER_LIST estructura mediante una llamada a la función FwpsFreeCloneNetBufferList0 .

Un controlador de llamada puede insertar o reemplazar búferes netos individuales (NET_BUFFER) o MDL dentro de la lista de búferes de red clonados. Este controlador también debe deshacer las modificaciones antes de llamar a . 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 en EL PMA es obtener aclaraciones de una aplicación en modo de usuario u otra operación relativamente rápida. El controlador de llamada no debe contener paquetes clonados mientras, por ejemplo, esperando la entrada del usuario o esperando la autorización del servicio web, o esperando cualquier otra operación que pueda tardar un tiempo arbitrario.

Si el controlador de llamada necesita esperar una operación potencialmente larga, realiza una copia profunda del paquete mediante FwpsAllocateNetBufferAndNetBufferList0, y bloquea y absorbe el paquete original.

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

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows Vista.
Plataforma de destino Universal
Encabezado fwpsk.h (incluya Fwpsk.h)
Library 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