Partilhar via


Função NdisAllocateFragmentNetBufferList (ndis/nblapi.h)

Chame a função NdisAllocateFragmentNetBufferList para criar uma nova estrutura de NET_BUFFER_LIST fragmentada com base nos dados em uma estrutura de NET_BUFFER_LIST existente.

Sintaxe

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

Um ponteiro para uma estrutura de NET_BUFFER_LIST existente.

NetBufferListPool

Um identificador que foi obtido de uma chamada para o função de NdisAllocateNetBufferListPool.

NetBufferPool

Um identificador de pool de estrutura NET_BUFFER que foi retornado anteriormente de uma chamada para NdisAllocateNetBufferPool .

[in] StartOffset

Um deslocamento de bytes adicional do início dos dados em cada estrutura NET_BUFFER. Esse deslocamento é além do valor do dataoffset membro especificado em cada estrutura NET_BUFFER.

[in] MaximumLength

O comprimento máximo, em bytes, para cada fragmento na nova estrutura de NET_BUFFER_LIST. Cada fragmento é descrito por uma estrutura NET_BUFFER.

[in] DataOffsetDelta

A quantidade adicional de espaço de dados usado que o NDIS deve disponibilizar nas novas estruturas de NET_BUFFER.

[in] DataBackFill

A quantidade de espaço de dados além do valor do parâmetro DataOffsetDelta para alocar se a alocação for necessária. Se o NDIS precisar alocar memória para fornecer o espaço de dados solicitado em DataOffsetDelta, ele também deverá alocar o espaço adicional que DataBackFill especifica.

[in] AllocateFragmentFlags

Sinalizadores NDIS que podem ser combinados com uma operação OR. Defina esse parâmetro como zero. No momento, não há nenhum sinalizador definido para essa função.

Valor de retorno

NdisAllocateFragmentNetBufferList retorna um ponteiro para uma nova estrutura de NET_BUFFER_LIST fragmentada. Se a alocação falhar, o valor retornado será NULL.

Observações

NdisAllocateFragmentNetBufferList aloca e inicializa um novo fragmento NET_BUFFER_LIST estrutura e estruturas NET_BUFFER que descrevem os mesmos dados descritos pela estrutura de NET_BUFFER_LIST que o chamador passou para NdisAllocateFragmentNetBufferList.

Se o fragmento NET_BUFFER_LIST estrutura deve ter atributos associados a um determinado pool, o chamador deverá especificar o identificador de pool no parâmetro NetBufferListPoolHandle ou netBufferPoolHandle. Por exemplo, o membro ProtocolType da estrutura de NET_BUFFER_LIST está associado ao pool.

Para cada estrutura NET_BUFFER na estrutura de NET_BUFFER_LIST de origem especificada, o NDIS cria o fragmento NET_BUFFER estruturas da seguinte maneira:

  • O NDIS cria os fragmentos a partir do início do espaço de dados usado na estrutura de NET_BUFFER de origem e deslocado pelo valor especificado no parâmetro StartOffset.
  • O NDIS divide o de espaço de dados usado (depois de contabilizar o startOffset) na estrutura de NET_BUFFER de origem em fragmentos.
  • O comprimento do espaço de dados usado de cada fragmento é menor ou igual ao valor especificado no parâmetro MaximumLength. O de espaço de dados usado do último fragmento pode ser menor que MaximumLength .
  • Cada fragmento é descrito por uma nova estrutura de NET_BUFFER e um novo conjunto de cadeias de MDL.
  • O deslocamento de dados das novas estruturas de NET_BUFFER é recuado (o valor do dataOffset membro é reduzido) pelo número de bytes especificados no parâmetro DataOffsetDelta.
  • Se o NDIS precisar alocar memória para fornecer o espaço de dados solicitado em DataOffsetDelta, ele também deverá alocar o espaço adicional que DataBackFill especifica.
O novo fragmento NET_BUFFER_LIST estrutura que NdisAllocateFragmentNetBufferList cria não inclui uma inicial NET_BUFFER_LIST_CONTEXT estrutura.

Chamar o função NdisFreeFragmentNetBufferList para liberar uma estrutura NET_BUFFER_LIST e todas as estruturas de NET_BUFFER associadas e cadeias de MDL que foram alocadas anteriormente chamando NdisAllocateFragmentNetBufferList.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte no NDIS 6.0 e posterior.
da Plataforma de Destino Universal
cabeçalho ndis/nblapi.h (inclua ndis.h)
biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
regras de conformidade de DDI Irql_NetBuffer_Function(ndis), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis)

Consulte também

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList