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