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 forNULL e os dados solicitados não forem contíguos, o NDIS copiará os dados solicitados para a área indicada pelo de Armazenamento do.
[in] AlignMultiple
O alinhamento múltiplo expresso no poder 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 múltiplo alinhamento.
Valor de retorno
NdisGetDataBuffer retorna um ponteiro para o início dos dados contíguos ou retorna NULL.
Se o DataLength membro da estrutura NET_BUFFER_DATA na estrutura NET_BUFFER à 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 de Armazenamento da seguinte maneira:
- Se o parâmetro Storage não forNULL, o NDIS copiará os dados para o buffer no Storage. O valor retornado é o ponteiro passado para o parâmetro de Armazenamento.
- Se o parâmetro Storage for NULL, o valor retornado será NULL.
Observações
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 |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da 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) |