订阅存在事件
状态订阅在驱动程序中表示为唯一的打开句柄。 每次 NFP 提供程序从非代理转换为近似或从非代理转换时,都会从驱动程序向客户端引发事件。
注意 当两个设备都是代理设备时,此接口当前无法判断删除了哪个代理设备或哪些订阅从哪个接近设备到达。
状态事件是使用典型的订阅路径实现的。 协议为“DeviceArrived”或“DeviceDeparted”的消息必须解释为特殊订阅。 到达消息必须是在传递收到的消息之前立即传递的第一条消息。 出发消息必须是在不再有消息后传递的最后一条消息。
订阅
这看起来就像常规订阅,但满足以下特定要求除外。
邻近感应设备及其驱动程序涉及从近端设备接收消息的协议流。
必需的措施
驱动程序必须接受并报告重复订阅,即使由同一客户端订阅。
在收到第一条消息之前,驱动程序必须像刚刚收到虚拟“DeviceArrived”消息一样运行。
当提供程序转换为非代理时,驱动程序必须像刚刚收到虚拟“DeviceDeparted”消息一样运行。
在客户端处理所有其他消息之前,不得将“DeviceDeparted”消息传递到客户端。
DeviceArrived 消息的有效负载必须是单个 DWORD,其高 31 位设置为零,并且仅当第一个成为代理的设备能够持续进行双向通信时,才设置为最小有效位。 对于 NFC,这相当于 LLCP 支持。
如果第一个成为近端的设备只是标记类型设备 (例如 NFC 论坛标记) ,则驱动程序必须清除 DeviceArrived 消息的有效负载中最小的有效位。
DeviceDeparted 消息的有效负载必须是值为 0 的单个 DWORD。