WLAN_NOTIFICATION_MSM 通知代码 59

WLAN_NOTIFICATION_MSM NotificationCode 59

我正在写一种 wlanapi 包装器。通过 WlanRegisterNotification I'm getting unexpected media-specific module (MSM) notification with code 59 (which is 0x3B in hex). WLAN_NOTIFICATION_MSM MSDN page 接收通知时不包含任何有用的信息。我的 wlanapi.h 也不包含这样的值,事实上这个枚举是从零开始的并且只包含 18 值 - 从 017.

有人知道这种通知的含义吗?为什么根本没有记录?

这是我目前的情况。

看起来这个通知是常规连接过程的一部分。也就是说,无论以前的连接状态如何,我在连接到无线网络时都会收到它。这是每次连接到网络时发生的通知序列:

wlan_notification_msm_associating
wlan_notification_msm_associated
wlan_notification_msm_authenticating
59 (0x3B)
wlan_notification_msm_signal_quality_change

wlan_notification_msm_associatedwlan_notification_msm_authenticating 在同一时刻触发,然后立即(在 10-20 毫秒内)触发代码为 59 (0x3F) 的通知.

此通知有 16 字节的负载。数据结构对我来说并不熟悉,张贴这个以防有人看起来很熟悉(10 个事件):

80805E08 009B0000 F1F10800 C400D634 <-- Switching between two networks here and below in random order
D0D049FA 009B0000 A6A60800 01542A00
80805E08 009B0000 696902FF 00FF4C6F
80805E08 00C40000 04040E00 000093DF
80805E08 009B0000 04040900 6F009361 <-- Diconnect and connect to the same network
80805E08 009B0000 04000700 00009340 <-- Diconnect and connect to the same network
64640000 00450002 0400114D 00009363 <-- Disconnect and connect to another network
80805E08 009B0000 04040511 005B93E8 <-- Diconnect and connect to the same network 
58580000 00450002 04000904 3D4293A1 <-- Connect to another network (i. e. switch)
80805E08 009B0000 04040100 10919316 <-- Connect to another network (i. e. switch)

有用链接

感谢任何帮助!

更新 1 通过 official sample:

连接时通知顺序相同
HandleAcmNotification(type = ConnectionStart)
HandleMsmNotification(type = Associating)
HandleMsmNotification(type = Associated)
HandleMsmNotification(type = Authenticating)
HandleMsmNotification(type = Code59)
HandleMsmNotification(type = SignalQualityChange)
HandleMsmNotification(type = Connected)
HandleAcmNotification(type = ConnectionComplete)

更新 2 为此,我在 GitHub 上创建了一个最小测试项目 - https://github.com/alexbereznikov/wlanapi-notification-code59-test.

二进制 x64 版本位于此处 - https://github.com/alexbereznikov/wlanapi-notification-code59-test/releases

成功连接到无线网络后,我得到以下输出:

这是设计使然。

0n59 通知代码是一个私人通知代码,当无线网络可能正在发生网络速度变化时,OS 会处理它。

对于最终开发人员,最终开发人员应该忽略它,因为它没有记录并且将来可能会更改,因为它是由底层 OS 处理的私人通知。

注意:这只会在更新的 OS 上发送(Windows 10),当禁用和 re-enabling 无线网络时。此通知不会针对较早的 OS(例如,Windows 7、Windows 8.1)

发送