Question

Je suis en train d'écrire une application pour communiquer avec les appareils USB à l'aide de winusb.dll. Il s'agit d'une bibliothèque en mode utilisateur qui permet une communication avec un appareil via winusb.sys installé comme pilote dans le noyau.

J'écris cette application dans C ++ avec Visual Studio 2008.

L'en-tête winusb.h se trouve dans le DDK Windows, donc j'ajoute le chemin d'inclusion "d: winddk 7100.0.0 inc ddk". J'obtiens ensuite une erreur que USB.h ne peut pas être trouvée ce que Winusb.h inclut, Usb.h est également dans le DDK mais dans un répertoire différent, donc j'ajoute "d: winddk 7100.0.0 inc api" comme Un include dir.

Une fois que j'ajoute ce chemin, tout va dans les toilettes et je commence à obtenir des erreurs de compilation dans stdio.h et un tas d'autres endroits étranges.

Je ne veux vraiment pas utiliser le système de construction DDK et le compilateur afin d'utiliser simplement cette DLL, c'est l'une des principales raisons pour lesquelles j'utilise WinUSB au lieu d'écrire un pilote approprié.

Quelqu'un a-t-il construit une application en utilisant winusb.dll et Visual Studio?

Était-ce utile?

La solution

Je travaille sur la rédaction d'une bibliothèque USB multiplateforme et l'utilisation de l'environnement de construction DDK rendrait mon processus de construction beaucoup plus compliqué.

WinUSB est censé être utilisé par les applications client pour les appareils qui chargent winusb.sys comme pilote. Cependant, il ne semble pas y avoir de version des en-têtes WinUSB emballés pour une utilisation dans les programmes en mode utilisateur (sans compter les pilotes UMDF).

Ce que j'ai fini par faire, c'est de copier les quelques en-têtes qui soutiennent Winusb.h du DDK et dans un répertoire privé, je fais ensuite référence à ce répertoire en tant que répertoire inclue pendant la construction.

Ce sont les en-têtes dont je devais copier:

POPPACK.h
PSHPACK1.h
usb.h
usb100.h
usb200.h
winusb.h
winusbio.h

Une fois que j'en ai eu inclus dans un répertoire privé et lié à winusb.lib dans le DDK, j'ai pu compiler et gérer mon projet dans Visual Studio.

Je ne sais pas si je recommanderais cette méthode car elle pourrait être mauvaise lorsque les en-têtes changent entre les versions DDK, mais j'ouvrirai un bogue de connexion pour voir si je peux demander à MS de créer un paquet d'en-têtes WinUSB à utiliser dans le client Applications en mode utilisateur.

Autres conseils

Historiquement, le DDK et le SDK n'ont pas bien joué ensemble, mais ce problème a été résolue avant la libération de Vista. Cependant, il semble que vous mélangeiez peut-être des parties d'un SDK avec un autre, ce qui n'est pas bon. J'utiliserais l'environnement DDK Build ou au moins je vais jeter un œil au chemin d'inclusion que l'environnement DDK configure et le reproduire exactement Dans les paramètres du projet VS.

Notez que vous pouvez utiliser l'environnement DDK Build tout en utilisant le VS IDE en créant un «projet MakeFile» ou vous pourriez être en mesure d'utiliser quelque chose comme les outils DDKBUILD de OSR ou Hollistech:

Je ne les ai pas utilisés, donc je ne sais pas à quel point ils fonctionnent, mais notez que malgré leurs noms et utilisations similaires, ce sont des outils différents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top