Compartir a través de


Función NdisAllocateCloneNetBufferList (ndis/nblapi.h)

Llame a la función NdisAllocateCloneNetBufferList para crear una nueva estructura de NET_BUFFER_LIST clonada.

Sintaxis

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

Parámetros

[in] OriginalNetBufferList

Puntero a una estructura de NET_BUFFER_LIST existente.

[in, optional] NetBufferListPoolHandle

Identificador obtenido de una llamada a . Función NdisAllocateNetBufferListPool .

[in, optional] NetBufferPoolHandle

Identificador de grupo de NET_BUFFER estructura que se devolvió anteriormente desde una llamada a NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

Marcas NDIS que se pueden combinar con una operación OR. Se definen las marcas siguientes:

NDIS_CLONE_FLAGS_RESERVED

Reservado para NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

Si se establece esta marca, NDIS no asigna nuevos MDL para el NET_BUFFER_LIST clonado. En su lugar, el NET_BUFFER_LIST clonado usa la misma cadena MDL que el NET_BUFFER_LIST original. Si se borra NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS, NDIS asigna nuevos MDL para hacer referencia a los búferes de datos originales.

Valor devuelto

NdisAllocateCloneNetBufferList devuelve un puntero a la nueva estructura de NET_BUFFER_LIST clonación. Si la asignación no se realizó correctamente, este puntero es NULL.

Comentarios

Llame a NdisAllocateCloneNetBufferList para crear una estructura de NET_BUFFER_LIST clonada que puede usar para enviar datos duplicados en una ruta de acceso de datos independiente.

Cada estructura NET_BUFFER de la estructura de NET_BUFFER_LIST original solo se clona desde el principio del espacio de datos usado, no desde el inicio del espacio de datos completo. Para obtener el desplazamiento desde el principio del espacio de datos hasta el inicio del espacio de datos usado, use la macro NET_BUFFER_DATA_OFFSET .

Si la estructura de NET_BUFFER_LIST clonada debe tener atributos asociados a un grupo determinado, el autor de la llamada debe especificar el identificador del grupo en el parámetro NetBufferListPoolHandle o NetBufferPoolHandle . Por ejemplo, el miembro ProtocolType de la estructura NET_BUFFER_LIST está asociado al grupo.

La estructura de NET_BUFFER_LIST clonada describe los mismos datos descritos por la estructura de NET_BUFFER_LIST en OriginalNetBufferList. NDIS no copia los datos descritos por los MDL originales en nuevos búferes de datos. En su lugar, las estructuras clonadas hacen referencia a los búferes de datos originales. La estructura de NET_BUFFER_LIST clonada no incluye una inicial NET_BUFFER_LIST_CONTEXT estructura.

Llamar a Función NdisFreeCloneNetBufferList para liberar una estructura de NET_BUFFER_LIST y todas las estructuras asociadas y cadenas MDL asignadas mediante una llamada a NdisAllocateCloneNetBufferList.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis/nblapi.h (include ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

Consulte también

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList