Funzione NdisAllocateNetBuffer (ndis/nblapi.h)
Chiamare la funzione NdisAllocateNetBuffer per allocare e inizializzare una struttura NET_BUFFER da un pool di strutture NET_BUFFER .
Sintassi
NDIS_EXPORTED_ROUTINE NET_BUFFER * NdisAllocateNetBuffer(
[in] NDIS_HANDLE PoolHandle,
[in, optional] MDL *MdlChain,
[in] ULONG DataOffset,
[in] SIZE_T DataLength
);
Parametri
[in] PoolHandle
Handle del pool di strutture NET_BUFFER restituito in precedenza da una chiamata a NdisAllocateNetBufferPool.
[in, optional] MdlChain
Puntatore a una catena MDL usata da NDIS per inizializzare la nuova struttura NET_BUFFER . MdlChain può essere NULL.
[in] DataOffset
Offset iniziale, in byte, dall'inizio del buffer all'inizio dello spazio dati usato nella catena MDL. Lo spazio dati in anticipo rispetto a questo offset è lo spazio dati inutilizzato. Pertanto, questo valore rappresenta anche la quantità iniziale di spazio di riempimento disponibile nella catena MDL. Se MdlChain è NULL, DataOffset deve essere 0.
[in] DataLength
Lunghezza dello spazio dati utilizzato, in byte, nella catena MDL. Se MdlChain è NULL, DataLength deve essere 0.
Valore restituito
NdisAllocateNetBuffer restituisce un puntatore alla struttura NET_BUFFER allocata dall'NDIS. Se l'allocazione non è riuscita, questo puntatore è NULL.
Commenti
Chiamare NdisFreeNetBuffer per liberare una struttura NET_BUFFER allocata da un pool di strutture NET_BUFFER .
Ad esempio, se la catena MDL originale contiene XDataLength e YDataOffset e CurrentMdl inizia con la seconda MDL (M) nella catena MDL originale, CurrentMdlOffset è Z. Il campo MdlChain in NET_BUFFER_DATA deve quindi puntare a una nuova catena MDL contenente X'DataLength e Y'DataOffset. Se CurrentMdl inizia con la terza MDL (M') nella nuova catena MDL, CurrentMdlOffset è Z' e le macro seguenti devono essere utilizzate per impostare i campi in NET_BUFFER:
NET_BUFFER_FIRST_MDL(_NB) = New MDL chain;
NET_BUFFER_DATA_LENGTH(_NB) = X';
NET_BUFFER_DATA_OFFSET(_NB) = Y';
NET_BUFFER_CURRENT_MDL(_NB) = M';
NET_BUFFER_CURRENT_MDL_OFFSET(_NB) = Z';
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), NdisAllocateNetBuffer(ndis) |