Compartilhar 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 NdisAllocateNetBufferListPool .

NetBufferPool

Um identificador do 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 é adicional ao valor do membro DataOffset especificado em cada estrutura NET_BUFFER.

[in] MaximumLength

O comprimento máximo, em bytes, para cada fragmento na nova estrutura 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 a ser alocado 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 especificado por DataBackFill .

[in] AllocateFragmentFlags

Sinalizadores NDIS que podem ser combinados com uma operação OR. Defina esse parâmetro como zero. Atualmente, não há sinalizadores definidos para essa função.

Retornar valor

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

Comentários

NdisAllocateFragmentNetBufferList aloca e inicializa um novo fragmento NET_BUFFER_LIST estrutura e estruturas NET_BUFFER que descrevem os mesmos dados descritos pela estrutura 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 deve especificar o identificador de pool no parâmetro NetBufferListPoolHandle ou NetBufferPoolHandle . Por exemplo, o membro ProtocolType da estrutura 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 espaço de dados usado (após a contabilização do 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 espaço de dados usado do último fragmento pode ser menor que MaximumLength .
  • Cada fragmento é descrito por uma nova estrutura NET_BUFFER e um novo conjunto de cadeias de MDL.
  • O deslocamento de dados das novas estruturas de NET_BUFFER é recuado (o valor do membro DataOffset é reduzido) pelo número de bytes especificado 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 especificado por DataBackFill .
O novo fragmento NET_BUFFER_LIST estrutura que NdisAllocateFragmentNetBufferList cria não inclui uma inicial NET_BUFFER_LIST_CONTEXT estrutura.

Chamar o A função NdisFreeFragmentNetBufferList libera uma estrutura NET_BUFFER_LIST e todas as estruturas de NET_BUFFER associadas e cadeias de MDL alocadas anteriormente chamando NdisAllocateFragmentNetBufferList.

Requisitos

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

Confira também

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList