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

[in, optional] NetBufferPoolHandle

Um identificador de pool de estrutura 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 for definido, o NDIS não alocará novos MDLs para o NET_BUFFER_LIST clonado. Em vez disso, o NET_BUFFER_LIST clonado usa a mesma cadeia de MDL que o NET_BUFFER_LIST original. Se NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS estiver limpo, o NDIS alocará novos MDLs para referenciar os buffers de dados originais.

Retornar valor

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.

Comentários

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 só é clonada 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 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.

A estrutura de NET_BUFFER_LIST de clone descreve os mesmos dados descritos pela estrutura 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 clones não inclui uma inicial NET_BUFFER_LIST_CONTEXT estrutura.

Chamar o A função NdisFreeCloneNetBufferList libera uma estrutura NET_BUFFER_LIST e todas as estruturas associadas e cadeias de MDL alocadas chamando NdisAllocateCloneNetBufferList.

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

Confira também

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList