Función NdisAllocateFragmentNetBufferList (ndis/nblapi.h)

Llame a la función NdisAllocateFragmentNetBufferList para crear una nueva estructura de NET_BUFFER_LIST fragmentada basada en los datos de una estructura NET_BUFFER_LIST existente.

Sintaxis

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
  [in] NET_BUFFER_LIST *OriginalNetBufferList,
       NDIS_HANDLE     NetBufferListPool,
       NDIS_HANDLE     NetBufferPool,
  [in] ULONG           StartOffset,
  [in] ULONG           MaximumLength,
  [in] ULONG           DataOffsetDelta,
  [in] ULONG           DataBackFill,
  [in] ULONG           AllocateFragmentFlags
);

Parámetros

[in] OriginalNetBufferList

Puntero a una estructura de NET_BUFFER_LIST existente.

NetBufferListPool

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

NetBufferPool

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

[in] StartOffset

Desplazamiento de bytes adicional desde el principio de los datos de cada estructura NET_BUFFER . Este desplazamiento se suma al valor del miembro DataOffset especificado en cada estructura NET_BUFFER.

[in] MaximumLength

Longitud máxima, en bytes, para cada fragmento de la nueva estructura de NET_BUFFER_LIST. Cada fragmento se describe mediante una estructura de NET_BUFFER.

[in] DataOffsetDelta

Cantidad adicional de espacio de datos usado que NDIS debe poner a disposición en las nuevas estructuras de NET_BUFFER.

[in] DataBackFill

Cantidad de espacio de datos además del valor del parámetro DataOffsetDelta que se va a asignar si es necesario asignar la asignación. Si NDIS debe asignar memoria para proporcionar el espacio de datos solicitado en DataOffsetDelta, también debe asignar el espacio adicional que especifica DataBackFill .

[in] AllocateFragmentFlags

Marcas NDIS que se pueden combinar con una operación OR. Establezca este parámetro en cero. Actualmente no hay marcas definidas para esta función.

Valor devuelto

NdisAllocateFragmentNetBufferList devuelve un puntero a una nueva estructura de NET_BUFFER_LIST fragmentada. Si se produce un error en la asignación, el valor devuelto es NULL.

Comentarios

NdisAllocateFragmentNetBufferList asigna e inicializa una nueva estructura NET_BUFFER_LIST fragmento y NET_BUFFER estructuras que describen los mismos datos descritos por la estructura NET_BUFFER_LIST que el autor de la llamada pasó a NdisAllocateFragmentNetBufferList.

Si el fragmento NET_BUFFER_LIST estructura 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.

Para cada estructura de NET_BUFFER de la estructura NET_BUFFER_LIST de origen especificada, NDIS crea las estructuras de NET_BUFFER de fragmento de la siguiente manera:

  • NDIS crea los fragmentos a partir del principio del espacio de datos usado en la estructura de NET_BUFFER de origen y el desplazamiento por el valor especificado en el parámetro StartOffset .
  • NDIS divide el espacio de datos usado (después de tener en cuenta startOffset ) en la estructura de NET_BUFFER de origen en fragmentos.
  • La longitud del espacio de datos usado de cada fragmento es menor o igual que el valor especificado en el parámetro MaximumLength . El espacio de datos usado del último fragmento puede ser menor que MaximumLength .
  • Cada fragmento se describe mediante una nueva estructura de NET_BUFFER y un nuevo conjunto de cadenas MDL.
  • El desplazamiento de datos de las nuevas estructuras de NET_BUFFER se retira (el valor del miembro DataOffset se reduce) por el número de bytes especificados en el parámetro DataOffsetDelta .
  • Si NDIS debe asignar memoria para proporcionar el espacio de datos solicitado en DataOffsetDelta, también debe asignar el espacio adicional que especifica DataBackFill .
El nuevo fragmento NET_BUFFER_LIST estructura que crea NdisAllocateFragmentNetBufferList no incluye una inicial NET_BUFFER_LIST_CONTEXT estructura.

Llamar a Función NdisFreeFragmentNetBufferList para liberar una estructura de NET_BUFFER_LIST y todas las estructuras de NET_BUFFER asociadas y cadenas MDL asignadas anteriormente mediante una llamada a NdisAllocateFragmentNetBufferList.

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), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis)

Consulte también

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList