Condividi tramite


Funzione NdisGetDataBuffer (ndis/nblapi.h)

Chiamare la funzione NdisGetDataBuffer per ottenere l'accesso a un blocco contiguo di dati da una struttura NET_BUFFER .

Sintassi

NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
  [in]           NET_BUFFER *NetBuffer,
  [in]           ULONG      BytesNeeded,
  [in, optional] PVOID      Storage,
  [in]           ULONG      AlignMultiple,
  [in]           ULONG      AlignOffset
);

Parametri

[in] NetBuffer

Puntatore a una struttura NET_BUFFER.

[in] BytesNeeded

Numero di byte contigui di dati richiesti.

[in, optional] Storage

Puntatore a un buffer o NULL se nessun buffer viene fornito dal chiamante. Il buffer deve essere maggiore o uguale alla dimensione del numero di byte specificato in ByteNeeded . Se questo valore è diverso da NULL e i dati richiesti non sono contigui, NDIS copia i dati richiesti nell'area indicata da Archiviazione .

[in] AlignMultiple

Il multiplo di allineamento espresso in potenza di due. Ad esempio, 2, 4, 8, 16 e così via. Se AlignMultiple è 1, non esiste alcun requisito di allineamento.

[in] AlignOffset

Offset, in byte, dal multiplo di allineamento.

Valore restituito

NdisGetDataBuffer restituisce un puntatore all'inizio dei dati contigui o restituisce NULL.

Se il membro DataLength della struttura NET_BUFFER_DATA nella struttura NET_BUFFER a cui punta il parametro NetBuffer è minore del valore nel parametro BytesNeededed , il valore restituito è NULL.

Se i dati richiesti nel buffer sono contigui, il valore restituito è un puntatore a una posizione fornita da NDIS. Se i dati non sono contigui, NDIS usa il parametro Storage come indicato di seguito:

  • Se il parametro Storage è diverso da NULL, NDIS copia i dati nel buffer in Archiviazione. Il valore restituito è il puntatore passato al parametro Storage .
  • Se il parametro Storage è NULL, il valore restituito è NULL.
Il valore restituito può anche essere NULL a causa di una condizione di risorsa bassa in cui non è possibile eseguire il mapping di un buffer di dati. Ciò può verificarsi anche se i dati sono contigui o il parametro Storage è diverso da NULL.

Commenti

Chiamare questa funzione per ottenere un puntatore a un'intestazione di dati di rete contenuta nella struttura NET_BUFFER . È possibile analizzare facilmente l'intestazione archiviata nel blocco di dati contiguo restituito da questa funzione.

Il requisito di allineamento richiesto viene espresso come potenza di due multipli più un offset. Ad esempio, se AlignMultiple è 4 e AlignOffset è 3, l'indirizzo dati deve essere un multiplo di 4 più 3. Se necessario, NDIS allocherà memoria per soddisfare il requisito di allineamento.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis/nblapi.h (include ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_NetBuffer_Function(ndis)

Vedi anche

NET_BUFFER

NET_BUFFER_DATA