현재 상태 이벤트 구독

현재 상태 구독은 드라이버 내에서 고유한 열린 핸들로 표시됩니다. NFP 공급자가 비동기에서 근접 또는 근접으로 전환될 때마다 드라이버에서 클라이언트에 이벤트가 throw됩니다.

참고 이 인터페이스는 현재 두 디바이스가 둘 다 근접할 때 어떤 근접 디바이스가 제거되었는지 또는 어떤 구독이 근접 디바이스에서 도착하는지 알 수 있는 기능을 제공하지 않습니다.

프레즌스 이벤트는 일반적인 구독 경로를 사용하여 구현됩니다. 프로토콜 "DeviceArrived" 또는 "DeviceDeparted"가 있는 메시지는 특수 구독으로 해석되어야 합니다. 도착 메시지는 받은 메시지를 배달하기 직전에 배달된 첫 번째 메시지여야 합니다. 출발 메시지는 더 이상 메시지가 가능하지 않은 후 배달된 마지막 메시지여야 합니다.

구독

이는 다음과 같은 특정 요구 사항을 제외하고 일반 구독처럼 보입니다.

근접 디바이스와 해당 드라이버는 근접 디바이스에서 메시지를 받는 프로토콜 흐름에 관여합니다.

필요한 작업

드라이버는 동일한 클라이언트에서 구독한 경우에도 중복 구독을 수락하고 보고해야 합니다.

  • 근접할 때 첫 번째 메시지가 수신되기 직전에 드라이버는 가상 "DeviceArrived" 메시지가 방금 수신된 것처럼 작동해야 합니다.

  • 공급자가 근접하지 않은 것으로 전환하면 드라이버는 가상 "DeviceDeparted" 메시지가 방금 수신된 것처럼 작동해야 합니다.

  • 다른 모든 메시지가 해당 클라이언트에서 처리되기 전에 "DeviceDeparted" 메시지를 클라이언트에 전달해서는 안 됩니다.

  • DeviceArrived 메시지에 대한 페이로드는 높은 31비트가 0으로 설정된 단일 DWORD여야 하며, 가장 중요한 비트는 근접한 첫 번째 디바이스가 지속적인 양방향 통신을 할 수 있는 경우에만 설정되어야 합니다. NFC의 경우 이는 LLCP 지원과 동일합니다.

  • 근접하게 될 첫 번째 디바이스가 단지 태그 형식 디바이스(예: NFC 포럼 태그)인 경우 드라이버는 DeviceArrived 메시지의 페이로드에서 가장 중요한 비트를 지워야 합니다.

  • DeviceDeparted 메시지에 대한 페이로드는 값이 0인 단일 DWORD여야 합니다.