I need to get the number (and size in bytes) of retransmitted Wifi packets with C++ under Windows. The Information I need is very low-level, encapsulated in the Frame Control of Wifi-Frame.
- Is there an interface to get the information I need directly from Windows/WinApi?
I got two attempts to achieve the information I want, but there are also questions:
Native WiFi API: has a struct called
WLAN_STATISTICS
which contains an array of structs WLAN_PHY_FRAME_STATISTICS with the fieldullRetryCount
.- Why is the
WLAN_PHY_FRAME_STATISTICS
an array? What does the elements represent? - Is the
ullRetryCount
the information I need? I get values here, but I can't be certain it's correct...
- Why is the
IP Helper API: with the the struct
MIB_IF_ROW2
there is the fieldOutDiscards
, where I don't get any values. Maybe my connection is to good and no frames are discarded?
Thanks in advance!
Probably you won't get this information, unless you have a specialized driver. Or, set up a sniffer, capture all communication from this device and find retransmissions.
WLAN_STATISTICS is an array because it can have several instances on devices with multiple PHYs. One WLAN_PHY_FRAME_STATISTICS table per PHY.
Discards on IP level are usually caused by "Quality of service" shaping, it is much higher layer than wifi phy.