Подписка на события присутствия
Подписка присутствия представляется в виде уникального открытого дескриптора в драйвере. При каждом переходе поставщика NFP с непрямого на прокси-сервер или без прокси-сервера на клиент будет вызываться событие из драйвера.
Примечание В настоящее время этот интерфейс не позволяет определить, какое ближайшее устройство было удалено или какие подписки поступают с какого прокси-устройства, если оба устройства являются прокси-устройствами.
События присутствия реализуются с помощью типичного пути подписки. Сообщения с протоколом DeviceArrived или DeviceDeparted должны интерпретироваться как специальные подписки. Сообщение о прибытии ДОЛЖНО быть первым сообщением, доставленным непосредственно перед доставкой полученных сообщений. Сообщение об отъезде ДОЛЖНО быть последним сообщением, доставленным после того, как сообщения больше не будут доступны.
Подписка
Это выглядит так же, как обычная подписка, за исключением следующих конкретных требований.
Устройство близкого взаимодействия и его драйвер участвуют в потоке протокола получения сообщений от ближайшего устройства.
Необходимые действия
Драйвер ДОЛЖЕН принимать и сообщать о повторяющихся подписках, даже если они подписаны тем же клиентом.
Непосредственно перед получением первого сообщения при наличии прокси-адреса драйвер ДОЛЖЕН действовать так, как будто виртуальное сообщение DeviceArrived было только что получено.
При переходе поставщика на состояние, не являющееся непосредственным, драйвер ДОЛЖЕН действовать так, как если бы только что было получено виртуальное сообщение DeviceDeparted.
Сообщение DeviceDeparted НЕ ДОЛЖНО быть доставлено клиенту до того, как все остальные сообщения будут обработаны этим клиентом.
Полезные данные для сообщения DeviceArrived должны быть одним словом DWORD с высоким значением 31 бита, равным нулю, и наименее значимым битом — только в том случае, если первое устройство, которое станет прокси-сервером, способно поддерживать постоянный двунаправленный обмен данными. Для NFC это приравнивается к поддержке LLCP.
Если первое устройство, которое станет прокси-сервером, является просто устройством типа тега (например, тегом форума NFC), то драйвер ДОЛЖЕН очистить наименее значимый бит в полезных данных сообщения DeviceArrived.
Полезные данные для сообщения DeviceDeparted должны быть одним DWORD со значением 0.