Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
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) |