Compartilhar via


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

Chame a função NdisAllocateCloneNetBufferList para criar um novo clone NET_BUFFER_LIST estrutura.

Sintaxe

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

Um ponteiro para uma estrutura de NET_BUFFER_LIST existente.

[in, optional] NetBufferListPoolHandle

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

[in, optional] NetBufferPoolHandle

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

[in] AllocateCloneFlags

Sinalizadores NDIS que podem ser combinados com uma operação OR. Os seguintes sinalizadores são definidos:

NDIS_CLONE_FLAGS_RESERVED

Reservado para NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

Se esse sinalizador estiver definido, o NDIS não alocará novos MDLs para o NET_BUFFER_LISTclonado. Em vez disso, o NET_BUFFER_LIST clonado usa a mesma cadeia de MDL que o NET_BUFFER_LISToriginal. Se NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS estiver limpo, o NDIS alocará novos MDLs para fazer referência aos buffers de dados originais.

Valor de retorno

NdisAllocateCloneNetBufferList retorna um ponteiro para o novo clone NET_BUFFER_LIST estrutura. Se a alocação não tiver sido bem-sucedida, esse ponteiro será NULL.

Observações

Chame NdisAllocateCloneNetBufferList para criar um clone NET_BUFFER_LIST estrutura que você pode usar para enviar dados duplicados em um caminho de dados separado.

Cada estrutura NET_BUFFER na estrutura de NET_BUFFER_LIST original é clonada apenas desde o início do espaço de dados usado, não o início de todo o espaço de dados. Para obter o deslocamento do início do espaço de dados até o início do espaço de dados usado, use a macro NET_BUFFER_DATA_OFFSET.

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

A estrutura de NET_BUFFER_LIST clone descreve os mesmos dados descritos pela estrutura de NET_BUFFER_LIST em OriginalNetBufferList. O NDIS não copia os dados descritos pelos MDLs originais para novos buffers de dados. Em vez disso, as estruturas clonadas fazem referência aos buffers de dados originais. A estrutura de NET_BUFFER_LIST de clonagem não inclui uma inicial NET_BUFFER_LIST_CONTEXT estrutura.

Chamar o função NdisFreeCloneNetBufferList para liberar uma estrutura NET_BUFFER_LIST e todas as estruturas associadas e cadeias de MDL que foram alocadas chamando NdisAllocateCloneNetBufferList.

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), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis)

Consulte também

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList