Função NdisAllocateNetBuffer (ndis/nblapi.h)
Chame a função NdisAllocateNetBuffer para alocar e inicializar uma estrutura NET_BUFFER de um pool de estruturas NET_BUFFER .
Sintaxe
NDIS_EXPORTED_ROUTINE NET_BUFFER * NdisAllocateNetBuffer(
[in] NDIS_HANDLE PoolHandle,
[in, optional] MDL *MdlChain,
[in] ULONG DataOffset,
[in] SIZE_T DataLength
);
Parâmetros
[in] PoolHandle
Um identificador do pool de estruturas NET_BUFFER que foi retornado anteriormente de uma chamada para NdisAllocateNetBufferPool.
[in, optional] MdlChain
Um ponteiro para uma cadeia de MDL que o NDIS usa para inicializar a nova estrutura de NET_BUFFER . MdlChain pode ser NULL.
[in] DataOffset
O deslocamento inicial, em bytes, desde o início do buffer até o início do espaço de dados usado na cadeia de MDL. O espaço de dados antes desse deslocamento é espaço de dados não utilizado. Portanto, esse valor também representa a quantidade inicial de espaço de backfill disponível na cadeia de MDL. Se MdlChain for NULL, DataOffset deverá ser 0.
[in] DataLength
O comprimento do espaço de dados usado, em bytes, na cadeia de MDL. Se MdlChain for NULL, DataLength deverá ser 0.
Retornar valor
NdisAllocateNetBuffer retorna um ponteiro para a estrutura NET_BUFFER alocada pelo NDIS. Se a alocação não tiver sido bem-sucedida, esse ponteiro será NULL.
Comentários
Chame NdisFreeNetBuffer para liberar uma estrutura de NET_BUFFER alocada de um pool de estruturas NET_BUFFER .
Por exemplo, se a cadeia de MDL original contiver XDataLength e YDataOffset, e CurrentMdl começar com o segundo MDL (M) na cadeia MDL original, CurrentMdlOffset será Z. O campo MdlChain no NET_BUFFER_DATA então precisa apontar para uma nova cadeia de MDL que contém X'DataLength e Y'DataOffset. Se CurrentMdl começar com o terceiro MDL (M') na nova cadeia de MDL, CurrentMdlOffset será Z' e as seguintes macros precisarão ser usadas para definir campos em NET_BUFFER:
NET_BUFFER_FIRST_MDL(_NB) = New MDL chain;
NET_BUFFER_DATA_LENGTH(_NB) = X';
NET_BUFFER_DATA_OFFSET(_NB) = Y';
NET_BUFFER_CURRENT_MDL(_NB) = M';
NET_BUFFER_CURRENT_MDL_OFFSET(_NB) = Z';
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 de DDI | Irql_NetBuffer_Function(ndis), NdisAllocateNetBuffer(ndis) |