NDIS_SET_PACKET_TIME_RECEIVED(
IN PNDIS_PACKET Packet,
IN ULONGLONG TimeReceived
);
NDIS_SET_PACKET_TIME_RECEIVED sets the TimeReceived value in the out-of-band data block associated with a given packet descriptor.
Drivers can use NDIS_SET_PACKET_TIME_RECEIVED to set this timestamp in the out-of-band data block associated with a packet descriptor before calling NdisMIndicateReceivePacket. Miniports that indicate multipacket receives can set the TimeReceived values for each packet in an indicated array to the same value before making an indication, particularly if the NIC has no internal clock, so the NIC driver calls NdisGetCurrentSystemTime.
All timestamps set in the NDIS_PACKET_OOB_DATA blocks associated with packet descriptors are expressed in system time units as the number of 100-nanosecond intervals since January 1, 160l. A driver can call NdisGetCurrentSystemTime to supply the TimeReceived argument to NDIS_SET_PACKET_TIME_RECEIVED.
When a protocol driver’s ProtocolReceivePacket function is called with such an indication, it can use NDIS_GET_TIME_RECEIVED to retrieve the TimeReceived timestamp using the Packet pointer it is given on entry.
If the ProtocolReceive function is called with an indicated packet descriptor for which the underlying driver set the TimeReceived timestamp, ProtocolReceive can call NdisQueryReceiveInformation to get this timestamp.
Callers of NDIS_SET_PACKET_TIME_RECEIVED run at IRQL <= DISPATCH_LEVEL.
MiniportHandleInterrupt, MiniportTimer, NdisGetCurrentSystemTime, NDIS_GET_PACKET_TIME_RECEIVED, NdisMIndicateReceivePacket, NDIS_OOB_DATA_FROM_PACKET, NDIS_PACKET_OOB_DATA, NdisQueryReceiveInformation, NDIS_SET_PACKET_TIME_SENT, ProtocolReceive, ProtocolReceivePacket