我正在写一种 wlanapi 的包装器。通过WlanRegisterNotification接收通知时,我收到带有代码59
(0x3B
十六进制)的意外媒体特定模块 (MSM) 通知。WLAN_NOTIFICATION_MSM MSDN 页面不包含任何有用信息。Mywlanapi.h
也不包含这样的值,实际上这个枚举是从零开始的并且只包含18
值 - from 0
to 17
。
有谁知道这种通知的含义,为什么根本没有记录?
这是我到目前为止所拥有的。
看起来此通知是常规连接过程的一部分。也就是说,我在连接到无线网络时得到它 - 无论以前的连接状态如何。这是每次连接到网络时发生的通知序列:
wlan_notification_msm_associating
wlan_notification_msm_associated
wlan_notification_msm_authenticating
59 (0x3B)
wlan_notification_msm_signal_quality_change
wlan_notification_msm_associated
并wlan_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)
有用的链接
- [Wlanapi] WLAN_NOTIFICATION_MSM NotificationCode 59(微软问答)
- [Wlanapi] WLAN_NOTIFICATION_MSM NotificationCode 59(c++ 论坛)
将不胜感激任何帮助!
通过官方示例连接时,更新 1 通知顺序相同:
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。