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 non viene fornito alcun buffer dal chiamante. Il buffer deve essere maggiore o uguale alla dimensione del numero di byte specificato in ByteNeeded . Se questo valore non èNULLe i dati richiesti non sono contigui, NDIS copia i dati richiesti nell'area indicata da Storage .

[in] AlignMultiple

L'allineamento multiplo 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, dall'allineamento multiplo.

Valore restituito

NdisGetDataBuffer restituisce un puntatore all'inizio dei dati contigui oppure 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 ByteNeed ed, 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 non èNULL, NDIS copia i dati nel buffer in storage. 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 non èNULL.

Osservazioni

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 è espresso come potenza di due multipli più un offset. Ad esempio, se AlignMultiple è 4 e AlignOffset è 3, l'indirizzo dati deve essere multiplo di 4 più 3. Se necessario, NDIS allocherà memoria per soddisfare il requisito di allineamento.

Fabbisogno

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)

Vedere anche

NET_BUFFER

NET_BUFFER_DATA