Funzione NdisRetreatNetBufferDataStart (ndis/nblapi.h)

Chiamare la funzione NdisRetreatNetBufferDataStart per accedere allo spazio dati più usato nella catena MDL di una struttura NET_BUFFER .

Sintassi

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
  [in]           NET_BUFFER              *NetBuffer,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);

Parametri

[in] NetBuffer

Puntatore a una struttura NET_BUFFER allocata in precedenza.

[in] DataOffsetDelta

Quantità di spazio dati utilizzato da aggiungere. NDIS regola di conseguenza il membro DataOffset della struttura NET_BUFFER. Se lo spazio dati inutilizzato non è sufficiente per soddisfare la richiesta, NDIS alloca memoria aggiuntiva.

[in] DataBackFill

Se NDIS deve allocare memoria, questo parametro specifica la quantità di spazio dati, oltre al valore del parametro DataOffsetDelta , da allocare.

[in, optional] AllocateMdlHandler

Punto di ingresso facoltativo per una funzione NetAllocateMdl . Se il chiamante specifica un punto di ingresso per la funzione NetAllocateMdl , NDIS chiama NetAllocateMdl per allocare un MDL e una memoria.

Valore restituito

NdisRetreatNetBufferDataStart restituisce uno dei valori seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
NdisRetreatNetBufferDataStart ha allocato correttamente lo spazio dati usato usando lo spazio dati inutilizzato o allocando una nuova risorsa di archiviazione.
NDIS_STATUS_RESOURCES
NdisRetreatNetBufferDataStart non è riuscito a causa di risorse insufficienti.
NDIS_STATUS_FAILURE
NdisRetreatNetBufferDataStart non è riuscito per motivi diversi da risorse insufficienti.

Commenti

NdisRetreatNetBufferDataStart tenta di soddisfare la richiesta riducendo il valore del membro DataOffset della struttura NET_BUFFER .

Se lo spazio dati inutilizzato non è sufficiente, questa funzione alloca un nuovo buffer e un MDL per descrivere il nuovo buffer e concatena il nuovo MDL all'inizio della catena MDL. NDIS chiama la funzione NetAllocateMdl specificata in AllocateMdl per allocare MDL e memoria. La funzione NetAllocateMdl può usare qualsiasi metodo di allocazione che soddisfi i requisiti di progettazione del driver.

Chiamare il Funzione NdisAdvanceNetBufferDataStart per rilasciare lo spazio dati usato aggiunto con NdisRetreatNetBufferDataStart.

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

NdisAdvanceNetBufferDataStart

NetAllocateMdl