mirror of
https://github.com/reactos/reactos.git
synced 2024-08-07 11:48:03 +00:00
NdisQueryPacketLength -- Based in an obvious way on a similar macro.
svn path=/trunk/; revision=9539
This commit is contained in:
parent
05769811b4
commit
0f0b33c44c
|
@ -2026,6 +2026,48 @@ NdisFreeBuffer(
|
|||
} \
|
||||
}
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* NdisQueryPacketLength(
|
||||
* IN PNDIS_PACKET Packet,
|
||||
* OUT PUINT PhysicalBufferCount OPTIONAL,
|
||||
* OUT PUINT BufferCount OPTIONAL,
|
||||
* OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
|
||||
* OUT PUINT TotalPacketLength OPTIONAL);
|
||||
*/
|
||||
#define NdisQueryPacketLength(Packet, \
|
||||
TotalPacketLength) \
|
||||
{ \
|
||||
if ((TotalPacketLength)) \
|
||||
{ \
|
||||
if (!(Packet)->Private.ValidCounts) { \
|
||||
UINT _Offset; \
|
||||
UINT _PacketLength; \
|
||||
PNDIS_BUFFER _NdisBuffer; \
|
||||
UINT _PhysicalBufferCount = 0; \
|
||||
UINT _TotalPacketLength = 0; \
|
||||
UINT _Count = 0; \
|
||||
\
|
||||
for (_NdisBuffer = (Packet)->Private.Head; \
|
||||
_NdisBuffer != (PNDIS_BUFFER)NULL; \
|
||||
_NdisBuffer = _NdisBuffer->Next) \
|
||||
{ \
|
||||
_PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
|
||||
NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
|
||||
_TotalPacketLength += _PacketLength; \
|
||||
_Count++; \
|
||||
} \
|
||||
(Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
|
||||
(Packet)->Private.TotalLength = _TotalPacketLength; \
|
||||
(Packet)->Private.Count = _Count; \
|
||||
(Packet)->Private.ValidCounts = TRUE; \
|
||||
} \
|
||||
\
|
||||
if (TotalPacketLength) \
|
||||
*((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* VOID
|
||||
|
|
Loading…
Reference in a new issue