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