Si vous souhaitez utiliser l’API Near-Field Proximity dans vos développements, mais que vous n’avez pas de matériel NFC, il y a une solution.

Il vous suffit d’installer un des exemples de drivers fourni avec le WDK :Near-Field Proximity Sample Driver (UMDF Version 1). Ce driver simule la présence de NFC sur votre machine et implémente la communication par le biais d’une connexion TCP.

En temps normal, il vous faudrait télécharger le toolkit, les samples, des outils, compiler, déployer, créer des certificats, etc…et ça vous prendrait des heures (si si).

La bonne nouvelle est que cet article va vous simplifier la vie, puisque je vous propose un zip avec les quelques éléments nécessaires et suffisants pour faire fonctionner tout cela comme il faut en un minimum de temps.

Au final il vous faudra donc, pour chaque machine à équiper:

  • Télécharger le zip et le décompresser
  • Importer le certificat inclus dans l’archive
  • Lancer un ficher de commande
  • Ajouter une règle à votre pare-feu

   

1. Télécharger l’archive

Plutôt que de télécharger le Windows Driver Kit, les driver samples, le WDK redistribuable components, installer cela au bon endroit, compiler et cibler correctement le driver, récupérer les bons binaires, créer le certificat, etc…, il vous suffit de télécharger le zip ci-dessous. Il contient les seuls éléments nécessaires à l’installation du driver sur une machine Windows 8.1 x64.

Décompressez-le où vous voulez sur le disque de chaque machine qui utilisera la Proximity API.

2. Importer le certificat dans le magasin

L’archive contient un certificat “test signed” NetNfpCertExport que vous devez importer pour pouvoir installer le driver.

Faites un click droit sur NetNfpCertExport.pfx  et choisissez “Installer PFX”

image_thumb1

Suivez l’assistant pour placer le certificat dans l’autorité de certification racines de confiance.

image_thumb9

Choisissez “Ordinateur local”, puis Suivant

image_thumb11

Indiquez le mot de passe qui protège la clé privée : “P@ssw0rd

image_thumb15

image_thumb17

Choisissez “Parcourir” et sélectionnez l’autorité de certification racines de confiance

image_thumb20

Validez

image_thumb22

Vous pouvez vérifier si le certificat est bien installé en ouvrant le fichier npf.cat : ce catalogue sera utilisé lors de l’installation du driver et doit être validé par le certificat.

image_thumb26

image_thumb28

Pas d’erreur de sécurité, on nous informe que le catalogue est valide : bien joué !

3. Installation du driver

Démarrez cmd.exe en mode administrateur et placez-vous dans le répertoire d’extraction de l’archive.

Lancez install.bat.

image_thumb24

Le driver devrait s’installer sans erreur.

Si ce n’est pas le cas, vous pouvez vérifier les logs ici : c:\Windows\inf\setupapi.dev.log

Si vous obtenez une erreur de ce type :

     dvi: {Update Device Driver - ROOT\PROXIMITY\0000}
     dvi:      {Build Driver List} 11:36:16.465
     dvi:           Searching for hardware ID(s):
     dvi:                wudf\netnfpprovider
     sig:           {_VERIFY_FILE_SIGNATURE} 11:36:16.486
      sig:                Key      = netnfpprovider.inf
     sig:                FilePath = c:\temp\netnfpprovider.inf
     sig:                Catalog  = c:\temp\nfp.cat
!    sig:                Verifying file against specific (valid) catalog failed! (0x800b0109)
!    sig:                Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.

C’est que votre certificat est mal installé, revenez à l’étape précédente de cet article.

Si vous obtenez cela:

>>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - WUDF\NetNfpProvider]
>>>  Section start 2013/11/19 11:08:51.377
      cmd: "C:\temp\devcon.exe"  install NetNfpProvider.inf WUDF\NetNfpProvider
     dvi: {Update Device Driver - ROOT\PROXIMITY\0000}
      dvi:      {Build Driver List} 11:08:51.439
     dvi:           Searching for hardware ID(s):
     dvi:                wudf\netnfpprovider
     dvi:      {Build Driver List - exit(0x00000000)} 11:08:51.467
     dvi:      {DIF_SELECTBESTCOMPATDRV} 11:08:51.473
     dvi:           No class installer for 'Périphériques de proximité'
     dvi:           No CoInstallers found
     dvi:           Default installer: Enter 11:08:51.495
      dvi:                {Select Best Driver}
!    dvi:                     Selecting driver failed(0xe0000228)
     dvi:                {Select Best Driver - exit(0xe0000228)}
!    dvi:           Default installer: failed!
!    dvi:           Error 0xe0000228: There are no compatible drivers for this device.
     dvi:      {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 11:08:51.539

Cela signifie que le driver (que j’ai fourni ici pour Windows 8.1 x64) n’est pas compatible avec votre machine. Auquel cas, il faudra passer par le download et l’install, la compil, etc…de tout ce que j’ai mentionné en introduction. Cela vous permettra d’obtenir les binaires compatibles avec votre machine et OS cibles.

S’émerveiller…

Maintenant que le driver est installé, nous avons accès à la fonction “Toucher et envoyer” dans le talisman “Périphériques”. On constate aussi qu’un périphérique de proximité a été installé dans le gestionnaire de périphériques

image_thumb34 

image_thumb36

4. Ajouter une règle au pare-feu

Pour s’assurer que le pare-feu ne bloquera pas les connexions TCP du driver sur le port 9299, nous allons ajouter une règle.

Effectuez cette opération sur les machines sur lesquelles le driver est installé.

image_thumb32

Cliquez sur “Paramètres avancés” et ajoutez une nouvelle règle pour le trafic entrant:

image_thumb38

Choisissez Port:

image_thumb40

Sélectionnez TCP et entrez le port 9299 qui est celui utilisé par le driver pour simuler la communication NFC.

image_thumb42

Autorisez la connexion

image_thumb44

Appliquez cette règle pour tous les types de réseaux.

image_thumb46

Choisissez un joli nom pour votre règle:

image_thumb48

Et voilà !

Tester une application qui utilise le NFC

Nous utiliserons l’application d’exemple Proximity C# Sample disponible sur MSDN dans la liste des samples de Windows 8.1.

Choisissez le premier scenario et cliquez sur “Advertise”. Remarquez le message vert : Tap another device to connect to a peer. Nous allons simuler cette action grâce au driver NFC.

     

image_thumb7 

L’application NetNfpControl permet de piloter le driver.

Sur la même machine, démarrez cmd.exe et placez-vous dans le répertoire où vous avez décompressé l’archive.

Dans l’invité de commande, exécutez NetNfpControl.exe <hostname ou IPv6 address de la machine avec laquelle vous souhaitez communiquer> (dans mon cas c’est stephetablet7).

Cette action va simuler un “Tap” entre les 2 machines.

image_thumb9[1]

Comme par magie, vous verrez apparaître le résultat d’un “Tap and launch” : une notification toast sur la machine “stepheTablet7” à laquelle on vient de se connecter par Near-field communication.

On vous invite à démarrer l’application si elle est déjà installée sur ce poste.

Untitled_thumb2

Pour être plus précise, voici le comportement du “Tap and do” selon le MSDN : Pour les connexions déclenchées par “tap”, si l’application n’est pas en cours d’exécution en avant plan sur la machine cible, alors Proximity invite l’utilisateur à activer l’application. Si l’application n’est pas installée sur la machine cible, alors proximity invite l’utilisateur à installer l’application depuis le Store. Pour plus de détails, voir le chapitre "Activating apps using Proximity" dans Supporting proximity and tapping.

Ce n’est pas le sujet ici, mais il y a bien sûr plusieurs cas d’utilisation possibles pour le “Tap and Do”, j’approfondirai probablement certains d’entre eux dans un prochain article.

image_thumb11[1]

C’est parti : vous êtes maintenant en mesure de jouer avec NFC !