2010-11-02 5 views
1

Nous portons notre dll de périphérique USB pour utiliser le WinUsb générique. Toutefois, WinUsb ne prend pas en charge plusieurs applications simultanées accss sur le même périphérique (Same VID & PID). Je voulais savoir s'il y avait un moyen d'implémenter cet accès concurrent en utilisant WinUsb? J'ai lu sur les pilotes de filtre & services. 1. Je ne veux pas utiliser un pilote de filtre car, si je comprends bien, cela devra passer WHQL, et je préfère ne pas aller dans ce chemin. 2. Concernant un service Windows: Comment exactement dois-je l'implémenter? Si le service reçoit tous les appels à WinUsb, et si une application différente essaie d'accéder au même périphérique, il ferme la connexion à la première application, ouvre une nouvelle connexion et revient à nouveau?Comment implémenter plusieurs accès d'application simultanée avec WinUsb

Le service est-il la bonne solution dans ce cas? Existe-t-il un autre moyen de mettre en œuvre la solution autre que ce que j'ai écrit?

Merci.

Répondre

0

Un pilote de filtre n'a pas besoin de transmettre WHQL. Vous avez seulement besoin de signer le fichier de catalogue, requis par le package du pilote. Cela nécessite seulement un certigiciel de signature de code de verising/.... This devrait être un bon point de départ pour apprendre à le savoir. Néanmoins, un pilote de noyau peut être difficile à développer. Alors peut-être qu'un serveur COM serait une meilleure approche. Vous implémentez ce partage à partir d'un service, en autorisant les clients COM à créer des objets à partir de votre service, puis à implémenter une sorte de partage/exclusion mutuelle dans votre serveur COM.

Un serveur COM-exe peut être écrit relativement rapidement.

+0

Comment mettre en œuvre l'exclusion mutuelle que vous avez mentionnée lors de la communication avec WinUSB? Ai-je besoin de fermer la connexion entre chaque appel usb? – Eldad

+0

Sry, je ne connais pas vraiment WinUSb. La plupart du temps, vous devriez pouvoir multiplexer les demandes de lecture et d'écriture. Ce n'est que lorsque vous devez faire plusieurs requêtes en même temps que vous pouvez le faire en introduisant un verrou (et plus tard les appels entrants échouent avec le périphérique occupé ...) – Christopher

Questions connexes