Condividi tramite


Funzione NdisAllocateFragmentNetBufferList (ndis/nblapi.h)

Chiamare la funzione NdisAllocateFragmentNetBufferList per creare una nuova struttura NET_BUFFER_LIST frammentata in base ai dati di una struttura NET_BUFFER_LIST esistente.

Sintassi

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
  [in] NET_BUFFER_LIST *OriginalNetBufferList,
       NDIS_HANDLE     NetBufferListPool,
       NDIS_HANDLE     NetBufferPool,
  [in] ULONG           StartOffset,
  [in] ULONG           MaximumLength,
  [in] ULONG           DataOffsetDelta,
  [in] ULONG           DataBackFill,
  [in] ULONG           AllocateFragmentFlags
);

Parametri

[in] OriginalNetBufferList

Puntatore a una struttura di NET_BUFFER_LIST esistente.

NetBufferListPool

Handle ottenuto da una chiamata all'oggetto funzione NdisAllocateNetBufferListPool.

NetBufferPool

Handle del pool di strutture NET_BUFFER restituito in precedenza da una chiamata a NdisAllocateNetBufferPool.

[in] StartOffset

Offset di byte aggiuntivo dall'inizio dei dati in ogni struttura NET_BUFFER. Questo offset è oltre al valore del membro DataOffset specificato in ogni struttura NET_BUFFER.

[in] MaximumLength

Lunghezza massima, in byte, per ogni frammento nella nuova struttura NET_BUFFER_LIST. Ogni frammento viene descritto da una struttura NET_BUFFER.

[in] DataOffsetDelta

Quantità aggiuntiva di spazio dati usato che NDIS deve rendere disponibile nelle nuove strutture NET_BUFFER.

[in] DataBackFill

Quantità di spazio dati oltre al valore del parametro DataOffsetDelta da allocare se è necessaria l'allocazione. Se NDIS deve allocare memoria per fornire lo spazio dati richiesto in DataOffsetDelta, deve allocare anche lo spazio aggiuntivo specificato DataBackFill.

[in] AllocateFragmentFlags

Flag NDIS che possono essere combinati con un'operazione OR. Impostare questo parametro su zero. Attualmente non sono stati definiti flag per questa funzione.

Valore restituito

NdisAllocateFragmentNetBufferList restituisce un puntatore a una nuova struttura NET_BUFFER_LIST frammentata. Se l'allocazione non è riuscita, il valore restituito viene NULL.

Osservazioni

NdisAllocateFragmentNetBufferList alloca e inizializza una nuova struttura NET_BUFFER_LIST frammento e strutture NET_BUFFER che descrivono gli stessi dati descritti dalla struttura NET_BUFFER_LIST passata dal chiamante a NdisAllocateFragmentNetBufferList.

Se il frammento NET_BUFFER_LIST struttura deve avere attributi associati a un determinato pool, il chiamante deve specificare l'handle del pool nel NetBufferListPoolHandle o parametro NetBufferPoolHandle. Ad esempio, il membro ProtocolType della struttura NET_BUFFER_LIST è associato al pool.

Per ogni struttura NET_BUFFER nella struttura di NET_BUFFER_LIST di origine specificata, NDIS crea il frammento NET_BUFFER strutture come indicato di seguito:

  • NDIS crea i frammenti a partire dall'inizio del usato spazio dati nella struttura NET_BUFFER di origine ed offset in base al valore specificato nel parametro StartOffset.
  • NDIS divide il usato spazio dati(dopo aver contabiliato il StartOffset ) nella struttura di NET_BUFFER di origine in frammenti.
  • La lunghezza del utilizzato spazio dati di ogni frammento è minore o uguale al valore specificato nel parametro MaximumLength. Il usato spazio dati dell'ultimo frammento può essere minore di MaximumLength .
  • Ogni frammento viene descritto da una nuova struttura NET_BUFFER e da un nuovo set di catene MDL.
  • L'offset dei dati delle nuove strutture di NET_BUFFER viene ritirato (il valore del membro DataOffset viene ridotto) del numero di byte specificato nel parametro DataOffsetDelta.
  • Se NDIS deve allocare memoria per fornire lo spazio dati richiesto in DataOffsetDelta, deve allocare anche lo spazio aggiuntivo specificato DataBackFill.
La nuova struttura NET_BUFFER_LIST frammento che NdisAllocateFragmentNetBufferList crea non include un oggetto iniziale NET_BUFFER_LIST_CONTEXT struttura.

Chiamare il funzione NdisFreeFragmentNetBufferList per liberare una struttura NET_BUFFER_LIST e tutte le strutture NET_BUFFER associate e le catene MDL precedentemente allocate chiamando NdisAllocateFragmentNetBufferList.

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), NdisAllocateFragmentNetBufferList(ndis), NdisAllocateFragmentNetBufferList_InitFail(ndis)

Vedere anche

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList