Protocolo de Windows

Para garantizar la interoperabilidad de los proveedores NFP habilitados para NFC, en esta sección se define exactamente cómo se debe encapsular un mensaje de Windows dentro de un mensaje NDEF. En esta sección también se asigna el modelo NFP pub/sub a los protocolos publicados del foro NFC para intercambiar mensajes NDEF. Estos requisitos solo se aplican si la tecnología de proximidad se anuncia como NFC.

Encapsulación

Se deben cumplir los siguientes requisitos para garantizar la encapsulación adecuada de los mensajes de Windows para la interoperabilidad nfc.

Acciones necesarias

  • Si la tecnología de proximidad se anuncia como NFC, el controlador DEBE encapsular cada "Windows".<Algunas publicaciones de SomeSubType>" dentro de los mensajes NDEF con un valor de campo TNF de 0x03.

    • El campo TIPO NDEF DEBE contener la asignación directa de la <cadena SomeSubType> donde cada carácter ancho se interpreta como un solo byte.
    • La carga útil de NDEF DEBE contener el contenido binario directo de la carga del mensaje de publicación.
  • Si la tecnología de proximidad se anuncia como NFC, el controlador DEBE coincidir con las suscripciones de "Windows.<SomeSubType>" SOLO con mensajes NDEF que tienen un valor de campo TNF de 0x03 y un campo TYPE que es igual a "<SomeSubType>" donde cada carácter ancho se interpreta como un solo byte.

    El controlador DEBE devolver solo la CARGA de los mensajes NDEF coincidentes a los suscriptores de este tipo.

"Windows:WriteTag." Publicaciones

Una publicación "Windows:WriteTag" es un medio para que una aplicación simplemente escriba una carga con tipo de Windows en una etiqueta.

Acciones necesarias

  • Se aplican los requisitos comunes "*:WriteTag" descritos en otra parte.
  • "Ventanas.<Algunos requisitos de publicación de SomeSubType> también se aplican a "Windows:WriteTag.<Publicaciones de SomeSubType>.

Publicaciones de "LaunchApp:WriteTag"

Una publicación "LaunchApp:WriteTag" es un medio para que una aplicación simplemente escriba un mensaje de "Windows.windows.com/LaunchApp" en una etiqueta.

El cliente enviará una lista de cadenas delimitada por tabulaciones (o delimitadas por null) como carga útil para esta publicación codificada en UTF-16LE. La primera cadena es la lista de argumentos de la aplicación. Después de la cadena de argumentos, serán pares de cadenas. La primera cadena de cada par define el calificador de plataforma para un identificador de aplicación, la siguiente cadena es el identificador de aplicación real que se va a iniciar en esa plataforma. Este mecanismo admite la interoperabilidad entre plataformas de aplicaciones más allá de Windows.

Acciones necesarias

  • El tipo del mensaje DEBE codificarse como si el tipo fuera "Windows.windows.com/LaunchApp".
  • Si el búfer contiene menos de tres cadenas, el controlador DEBE completar el IOCTL con STATUS_INVALID_PARAMETER.
  • Si el búfer tiene más de 3000 caracteres, el controlador DEBE completar el IOCTL con STATUS_INVALID_PARAMETER.
  • Si el búfer contiene una o varias cadenas de longitud cero (dos caracteres de tabulación consecutivos), el controlador DEBE completar el IOCTL con STATUS_INVALID_PARAMETER.
  • Si el búfer contiene un número par de cadenas, el controlador DEBE completar el IOCTL con STATUS_INVALID_PARAMETER.
  • El controlador DEBE analizar el búfer en una cadena de argumento y una lista de tuplas de plataforma o AppID.
  • Si alguna cadena de AppID o plataforma tiene más de 255 caracteres, el controlador DEBE completar el IOCTL con STATUS_INVALID_PARAMETER.
  • La primera USHORT de la carga escrita en la etiqueta DEBE contener el número de tuplas de plataforma o AppID en la codificación big-endian.
  • Todas las cadenas DEBEN convertirse de UTF-16LE a UTF-8.
  • Las longitudes de cadena escritas en la carga deben estar en bytes.
  • Para cada tupla de plataforma o AppID, el controlador DEBE agregar a la carga un byte con la longitud (en bytes) de la cadena de plataforma seguida de la propia cadena de plataforma seguida de un byte con la longitud (en bytes) de la cadena AppID seguida de la propia cadena appID.
  • El controlador DEBE agregar un USHORT que contenga la longitud de la cadena de argumento seguida de la propia cadena de argumento.