mirror of
https://github.com/reactos/reactos.git
synced 2024-09-09 20:30:04 +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
|
* VOID
|
||||||
|
|
Loading…
Reference in a new issue