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 may be NSFW.
Clik here to view.
Suivez l’assistant pour placer le certificat dans l’autorité de certification racines de confiance.
Image may be NSFW.
Clik here to view.
Choisissez “Ordinateur local”, puis Suivant
Image may be NSFW.
Clik here to view.
Indiquez le mot de passe qui protège la clé privée : “P@ssw0rd”
Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
Choisissez “Parcourir” et sélectionnez l’autorité de certification racines de confiance
Image may be NSFW.
Clik here to view.
Validez
Image may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
Cliquez sur “Paramètres avancés” et ajoutez une nouvelle règle pour le trafic entrant:
Image may be NSFW.
Clik here to view.
Choisissez Port:
Image may be NSFW.
Clik here to view.
Sélectionnez TCP et entrez le port 9299 qui est celui utilisé par le driver pour simuler la communication NFC.
Image may be NSFW.
Clik here to view.
Autorisez la connexion
Image may be NSFW.
Clik here to view.
Appliquez cette règle pour tous les types de réseaux.
Image may be NSFW.
Clik here to view.
Choisissez un joli nom pour votre règle:
Image may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
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.
Image may be NSFW.
Clik here to view.
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 may be NSFW.
Clik here to view.
C’est parti : vous êtes maintenant en mesure de jouer avec NFC !
Image may be NSFW.Clik here to view.