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) |