Frage

Ich bin dabei, eine Anwendung zu schreiben, um mit USB -Geräten mit winusb.dll zu kommunizieren. Dies ist eine Benutzer-Mode-Bibliothek, die die Kommunikation mit einem Gerät über WinusB.Sys ermöglicht, die als Treiber im Kernel installiert sind.

Ich schreibe diese Anwendung in C ++ mit Visual Studio 2008.

Der Header Winusb.h befindet sich im Windows DDK, daher füge ich den Include -Pfad "d: wINDDK 7100.0.0 INC DDK" hinzu. Ich erhalte dann einen Fehler, dass USB.H nicht gefunden werden kann, welches Winusb.h, USB.H, auch im DDK, aber in einem anderen Verzeichnis, also "D: Winddk 7100.0.0 Inc api" als so füge so hinzu "so wie Ein inklusive Dir.

Sobald ich diesen Pfad hinzufügt, geht alles in die Toilette und ich fange an, Kompilierfehler in stdio.h und ein paar andere seltsame Orte zu erhalten.

Ich möchte das DDK -Build -System und Compiler wirklich nicht verwenden, um diese DLL einfach zu verwenden. Das ist einer der Hauptgründe, warum ich Winusb verwende, anstatt einen richtigen Treiber zu schreiben.

Hat jemand eine Anwendung mit winusb.dll und Visual Studio erstellt?

War es hilfreich?

Lösung

Ich arbeite daran, eine plattformübergreifende USB-Bibliothek zu schreiben und die DDK-Build-Umgebung zu verwenden, würde meinen Build-Prozess viel komplizierter machen.

Winusb soll von Client -Anwendungen für Geräte verwendet werden, die winusb.sys als Treiber laden. Es scheint jedoch keine Version der WinusB-Header zu geben, die für die Verwendung in User-Mode-Programmen verpackt sind (ohne UMDF-Treiber).

Am Ende habe ich die wenigen Header, die winusb.h aus dem DDK und in ein privates Verzeichnis unterstützen, auf dieses Verzeichnis als Einschlussverzeichnis während des Builds kopiert.

Dies sind die Header, die ich kopieren musste:

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

Sobald ich diese in einem privaten Verzeichnis enthalten und mit Winusb.lib im DDK verknüpft und mein Projekt in Visual Studio kompilieren und ausführen konnte.

Ich weiß nicht, ob ich diese Methode empfehlen würde, da sie schlecht sein könnte, wenn sich die Header zwischen DDK -Releases ändern, aber ich werde einen Verbindungsfehler öffnen, um zu sehen, ob ich MS dazu bringen kann, ein Paket von Winusb -Headern für die Verwendung im Client zu erstellen Benutzer-Mode-Anwendungen.

Andere Tipps

Historisch gesehen haben DDK und SDK nicht gut zusammen gespielt, aber dieses Problem wurde irgendwann vor der Freilassung von Vista behoben. Es scheint jedoch, als würden Sie Teile eines SDK mit einem anderen mischen, was nicht gut ist. Entweder würde ich die DDK -Build -Umgebung verwenden oder zumindest den Einschluss der DDK -Umgebung ansehen, die die DDK -Umgebung einstellt, und sie replizieren exakt In den VS -Projekteinstellungen.

Beachten Sie, dass Sie die DDK -Build -Umgebung verwenden und dennoch die VS IDE verwenden können, indem Sie ein „Makefile -Projekt“ erstellen, oder Sie können möglicherweise so etwas wie die DDKBuild -Tools von OSR oder Hollistech verwenden:

Ich habe diese nicht benutzt, also bin ich mir nicht sicher, wie gut sie funktionieren, aber beachten Sie, dass sie trotz ihrer ähnlichen Namen und Verwendung unterschiedliche Werkzeuge sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top