NdisGetFirstBufferFromPacket

VOID
   NdisGetFirstBufferFromPacket(
       IN PNDIS_PACKET _Packet,
       OUT PNDIS_BUFFER  *_FirstBuffer,
       OUT PVOID *_FirstBufferVA,
       OUT PUINT _FirstBufferLength,
       OUT PUINT _TotalBufferLength
       );

NdisGetFirstBufferFromPacket returns pointers to the buffer descriptor and base virtual address for the initial buffer chained to a given packet descriptor, along with the sizes of the initial buffer and total buffer in case the buffer is fragmented.

Parameters

Packet

Points to the packet descriptor from which this macro extracts information about the initial buffer.

FirstBuffer

Points to a caller-supplied variable in which this macro returns the address of the initial buffer descriptor chained to the given packet descriptor.

FirstBufferVA

Points to a caller-supplied variable in which this macro returns the base virtual address of the initial buffer associated with the packet.

FirstBufferLength

Points to a caller-supplied variable in which this macro returns the number of bytes mapped by the initial buffer descriptor chained to the packet descriptor.

TotalBufferLength

Points to a caller-supplied variable in which this macro returns the total number of bytes mapped by all buffer descriptors chained to the packet descriptor.

Comments

Drivers use this macro to get information about the initial buffer and amount of data associated with a given packet faster than they can by making calls to NdisQueryPacket and, then, NdisQueryBuffer.

Callers of NdisGetFirstBufferFromPacket run at IRQL <= DISPATCH_LEVEL.

See Also

MiniportSend, MiniportSendPackets, NdisGetNextBuffer, NDIS_PACKET, NdisQueryBuffer, NdisQueryPacket, ProtocolReceivePacket