Compartilhar via


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.
O valor retornado também pode ser NULL devido a uma condição de recurso baixa em que um buffer de dados não pode ser mapeado. Isso pode ocorrer mesmo se os dados forem contíguos ou o parâmetro Storage não for 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)

Confira também

NET_BUFFER

NET_BUFFER_DATA