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