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.
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) |