Função NdisGetDataBuffer (ndis/nblapi.h)
Chame a função NdisGetDataBuffer para obter acesso a um bloco contíguo de dados de uma estrutura NET_BUFFER .
Sintaxe
NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
[in] NET_BUFFER *NetBuffer,
[in] ULONG BytesNeeded,
[in, optional] PVOID Storage,
[in] ULONG AlignMultiple,
[in] ULONG AlignOffset
);
Parâmetros
[in] NetBuffer
Um ponteiro para uma estrutura NET_BUFFER.
[in] BytesNeeded
O número de bytes contíguos de dados solicitados.
[in, optional] Storage
Um ponteiro para um buffer ou NULL se nenhum buffer for fornecido pelo chamador. O buffer deve ser maior ou igual ao número de bytes especificados em BytesNeeded . Se esse valor não for NULL e os dados solicitados não forem contíguos, o NDIS copiará os dados solicitados para a área indicada pelo Armazenamento .
[in] AlignMultiple
O alinhamento múltiplo expresso na potência de dois. Por exemplo, 2, 4, 8, 16 e assim por diante. Se AlignMultiple for 1, não haverá nenhum requisito de alinhamento.
[in] AlignOffset
O deslocamento, em bytes, do alinhamento múltiplo.
Retornar valor
NdisGetDataBuffer retorna um ponteiro para o início dos dados contíguos ou retorna NULL.
Se o membro DataLength da estrutura NET_BUFFER_DATA na estrutura NET_BUFFER para a qual o parâmetro NetBuffer aponta for menor que o valor no parâmetro BytesNeeded , o valor retornado será NULL.
Se os dados solicitados no buffer forem contíguos, o valor retornado será um ponteiro para um local que o NDIS fornece. Se os dados não forem contíguos, o NDIS usará o parâmetro Storage da seguinte maneira:
- Se o parâmetro Storage não for NULL, o NDIS copiará os dados para o buffer no Armazenamento. O valor retornado é o ponteiro passado para o parâmetro Storage .
- Se o parâmetro Storage for NULL, o valor retornado será NULL.
Comentários
Chame essa função para obter um ponteiro para um cabeçalho de dados de rede contido na estrutura NET_BUFFER . Você pode analisar facilmente o cabeçalho armazenado no bloco de dados contíguo que essa função retorna.
O requisito de alinhamento solicitado é expresso como uma potência de dois múltiplos mais um deslocamento. Por exemplo, se AlignMultiple for 4 e AlignOffset for 3, o endereço de dados deverá ser um múltiplo de 4 mais 3. Se necessário, o NDIS alocará memória para atender ao requisito de alinhamento.
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) |