Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 |