Entwickler-Ecke
Programmierwerkzeuge - VS 2008 für WinDDK einrichten
Flamefire - Sa 07.11.09 00:21
Titel: VS 2008 für WinDDK einrichten
Ich würde gerne mit VS 2008 Treiber erstellen.
Hab also das WinDDK runtergeladen und versucht:
Fehler àla
| Zitat: |
1>c:\winddk\inc\api\driverspecs.h(356) : error C2144: Syntaxfehler: 'char' sollte auf ')' folgen
1>c:\winddk\inc\api\driverspecs.h(356) : error C3861: "SAL_functionClass": Bezeichner wurde nicht gefunden.
1>c:\winddk\inc\api\driverspecs.h(356) : error C2059: Syntaxfehler: ')'
1>c:\winddk\inc\api\driverspecs.h(374) : error C2144: Syntaxfehler: 'char' sollte auf ')' folgen
1>c:\winddk\inc\api\driverspecs.h(374) : error C3861: "SAL_acquire": Bezeichner wurde nicht gefunden.
1>c:\winddk\inc\api\driverspecs.h(374) : error C2059: Syntaxfehler: ')'
1>c:\winddk\inc\api\driverspecs.h(381) : error C2144: Syntaxfehler: 'char' sollte auf ')' folgen
1>c:\winddk\inc\api\driverspecs.h(381) : error C3861: "SAL_release": Bezeichner wurde nicht gefunden. |
dann hab ichs mit
DDKWizard [
http://ddkwizard.assarbad.net/] probiert.
der will aber die WXPBASE variable gesetzt haben. hab aber keine ahnung worauf die beim winDDK gesetzt werden muss.
direkt auf C:\winddk nimmt er nicht an: "ERROR #3: To build using type WXP you need to set the %WXPBASE% environment variable to point to the Windows XP DDK base directory!"
kann mir jemand weiterhelfen?
Bzw hatte ich es kurz zum laufen bekommen, aber der stellt mir (trotz /WXP) die exe in "objchk_win7_x86" und wenn ich die versuch auszuführen kommt "Keine zulässige win32 anwendung"
Moderiert von
Christian S.: Topic aus Off Topic verschoben am Fr 06.11.2009 um 23:23
Assarbad - Mi 02.12.09 06:34
Eine schöne Liste mit Fehlerausgaben hast Du uns gegeben, nur
keine einzige Information die zur Lösung Deines Problems auch nur ansatzweise beitragen könnte. Man müßte bspw. wissen welche Plattform Dein Zielsystem ist und was bspw. in der SOURCES steht ...
Flamefire hat folgendes geschrieben : |
Ich würde gerne mit VS der will aber die WXPBASE variable gesetzt haben. hab aber keine ahnung worauf die beim winDDK gesetzt werden muss.
direkt auf C:\winddk nimmt er nicht an: "ERROR #3: To build using type WXP you need to set the %WXPBASE% environment variable to point to the Windows XP DDK base directory!" |
Wer lesen kann ist klar im Vorteil. Ich habe mir eigentlich für solche Fälle die Mühe gemacht eine ziemlich lange und
ausführliche Dokumentation [
http://ddkwizard.assarbad.net/downloads/ddkwiz_manual.pdf] zu schreiben. Die einzige Ausrede die jetzt noch kommen könnte ist, daß Du kein Englisch lesen kannst und selbst dann sind die Beispiele noch halbwegs verständlich. Ich zitiere mal aus der neuesten Version der Doku:
| Zitat: |
- Windows XP DDK:
For this DDK set the variable WXPBASE to point to the base directory of your Windows
XP DDK. A usual location is C:\WINDDK\2600.
- Windows 2003 Server DDK:
For this DDK set the variable WNETBASE to point to the base directory of your Windows
2003 Server DDK. A usual location is C:\WINDDK\3790.1830 (for the 2003 SP1 DDK).
|
Version 1.3.0 macht das aber noch deutlicher im Wizard selbst (die Overrides auf der rechten Seite sind dahingehend geändert worden). Wie in der Doku beschrieben kann man auch die Basisverzeichnisse direkt "im" Projekt definieren indem man in
ddkbldenv.cmd die entsprechende Variable setzt. Dadurch ist der Ansatz deutlich all jenen überlegen die nur eine globale Variable erlauben und somit auf
ein DDK/WDK in
einem Verzeichnis festgelegt sind.
Im Notfall hülfe eventuell auch einfach eine Kontaktaufnahme mit dem Autor des DDKWizard (also mir) über meine Webseite o.ä. ...
Flamefire hat folgendes geschrieben : |
| kann mir jemand weiterhelfen? |
Vielleicht hilft ein VHS-Kurs "Englisch"?
Flamefire hat folgendes geschrieben : |
| Bzw hatte ich es kurz zum laufen bekommen, aber der stellt mir (trotz /WXP) die exe in "objchk_win7_x86" und wenn ich die versuch auszuführen kommt "Keine zulässige win32 anwendung" |
Hmm, könnte daran liegen, daß Du a.) versuchst das Windows 7/2008 Server R2 WDK mit einer WXP-Konfiguration zu benutzen (aua!) und b.) daß der Linker standardmäßig (für die gewählten Einstellungen) das entsprechende Feld im PE-Header so setzt, daß die Anwendung nur auf Windows 6.1 (Also "Windows 7") und höher ausgeführt werden kann.
Toll, oder?
NB: da ich hier aufgrund eines kleinen Problems mit einem Moderator vor wenigen Jahren (als ich noch "in Delphi" machte) quasi als persona non grata galt, bin ich nicht 100% sicher ob dieser Beitrag hier und mein Nutzerkonto bestehen bleibt. Also im Zweifelsfall empfiehlt sich eben die Kontaktaufnahme über eine der auf meiner Webseite angegebenen Möglichkeiten.
Flamefire - Mi 02.12.09 11:50
Das Problem im neuen WinDDK ist, dass es keine Zahlen mehr gibt, die dort was aussagen könnten.
Die einzige unterscheidung ist im Ordner WinDDK/lib
dort gibt es u.a. wxp,win7 usw als ordner
deine Doku hab ich gelesen (zumindest die wichtigsten stellen) und ja ich kann englisch, danke ;-)
und von wegen Win7DDK verwenden: wie gesagt: ist jetzt alles eins
Nja ich verwende jetzt die normale Buildumgebung und damit den compiler vom WinDDK (nachdem ich verstanden hab, wie der funktioniert) und hab keine probleme mehr (außer ständiges suchen von stubs ;-) )
Trotzdem noch danke...
Assarbad - Mi 02.12.09 14:29
Flamefire hat folgendes geschrieben : |
Das Problem im neuen WinDDK ist, dass es keine Zahlen mehr gibt, die dort was aussagen könnten.
Die einzige unterscheidung ist im Ordner WinDDK/lib
dort gibt es u.a. wxp,win7 usw als ordner |
Irrtum. Die Zahl welche etwas aussagt ist 7600.16385.0. Beim 2003er DDK war es 3790 (RTM) und 3790.1830 (SP1) ... ein SP2 gab es zwar, aber dafür nimmt man die neueren WDKs oder die vorhandenen 2003er DDKs. Und so geht das Spiel weiter für jeden DDK-Release. Einzig alles vor XP ist "anders", denn damals waren die Compiler noch nicht Teil des Pakets. Die Windows 2000er DDKs setzten bspw. Visual Studio 6 voraus.
Flamefire hat folgendes geschrieben : |
| und von wegen Win7DDK verwenden: wie gesagt: ist jetzt alles eins |
Nein, die alten DDKs/WDKs hat Microsoft nicht einfach weggezaubert. Ich benutze bspw. mehrere, ansonsten ließe sich DDKBUILD bei der Entwicklung auch ziemlich schlecht testen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| C:\WINDDK>dir /b 2600 2600.1106 3790 3790.1830 6000 6001.18000 6001.18001 6001.18002 7600.16385.0 ddkbuild.cmd DDKVersion.xml |
Den meisten Code kompiliere ich noch heute mit dem 2003er DDK (na gut, eigentlich mit dem 2003er IFS Kit, aber für diese Diskussion ist's egal).
Der Sinn hinter den Basisverzeichnissen ist aber ein anderer. Wer schonmal Produktivtreiber kompiliert hat und seine böse Überraschung überlegt hat wenn er unvorsichtigerweise zwischenzeitlich das DDK/WDK auf eine neuere Version aktualisiert hatte, der wird wissen was ich meine. Ab und an "bricht" der Build eben. Daher haben es sich viele Treiberentwickler angewöhnt das DDK/WDK
komplett in einem Versionskontrollsystem zu archivieren. Abgesehen davon ist es einfach sauschwer in einem Skript (denn die Idee mit den Basisverzeichnissen kommt von DDKBUILD, nicht von den DDKs/WDKs) solche Daten zu ermitteln. Mit einem Programm kann man einfach mal überall die Registrierung durchstöbern - bei einem (NT) Skript wird es saukompliziert.
Du wirst doch wissen welches DDK/WDK du installiert hast?! Laut dem Verzeichnisnamen den Du genannt hast ist es entweder eine Vorversion des Windows 7er WDKs oder die finale Version (7600.16385.0). Und ob Du nun das Standardverzeichnis nimmst oder es abänderst tut nix zur Sache. Das Basisverzeichnis soll auf das Verzeichnis zeigen welches .\bin, .\src usw.
enthält. Oder um es genauer zu machen - für %W7BASE%, %WLHBASE%, %WNETBASE%, %WXPBASE% (welche wir der Einfachheit halber zu %BASEDIR% zusammenziehen, muß gelten %BASEDIR%\bin\setenv.bat muß existieren.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| C:\WINDDK>cd 3790.1830\bin
C:\WINDDK\3790.1830\bin>dir /b amd64mk.inc appschema.xml coffbase.txt ddktree.mac drvfast.cmd generic.mac i386mk.inc ia64mk.inc makefile.def makefile.new makefile.plt projects.inc setenv.bat verify.src w2k win64 wppconfig x86 |
Flamefire - Mi 02.12.09 16:49
geladen hab ich das WDK von hier:
http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx
verzeichnisstruktur sieht so aus:
| Zitat: |
C:\WinDDK>dir /b
bin
blockdir
build.dat
Catalog
Debug
help
inc
install.htm
lib
license.rtf
OACR
project.mk
redist
redist.txt
relnote.htm
samples.txt
src
tools
C:\WinDDK\bin>dir /b
amd64
amd64mk.inc
BlockDir
coffbase.txt
generic.mac
i386mk.inc
ia64
ia64mk.inc
makefile.ctrpp
makefile.def
makefile.new
makefile.plt
oacr_base.ini
projects.inc
selfsign
setenv.bat
setwdf.bat
verify.src
WppConfig
x86
C:\WinDDK\lib>dir /b
ATL
Crt
Mfc
wdf
win7
wlh
wnet
wxp
|
Assarbad - Mi 02.12.09 18:31
Dann willst Du:
Und in DDKWizard willst du Projekte fuer das Windows 7 WDK erstellen.
Flamefire - Mi 02.12.09 19:51
warum win7?
woraus leitet sich ab, dass ich win7 verwenden muss?
oder ist wxp eine teilmenge von win7? (was ich bezweifle, da win7 treiber nicht auf xp laufen)
auf jedenfall konnte ich mittels der wxp buildumgebung aus genau diesem wdk wxp treiber compilen und ausführen (laden...wie auch immer)
EDIT: oh...grad 2 was intressantes aus dem startmenü erfahren:
Verknüpfung: C:\WINDOWS\system32\cmd.exe /k C:\WinDDK\bin\setenv.bat C:\WinDDK\ chk x86 WXP
name: WDK 7600.16385.0
Assarbad - Mi 02.12.09 20:09
Flamefire hat folgendes geschrieben : |
warum win7?
woraus leitet sich ab, dass ich win7 verwenden muss?
oder ist wxp eine teilmenge von win7? (was ich bezweifle, da win7 treiber nicht auf xp laufen) |
Bist Du sicher? Du
kannst lesen? Du
verstehst Englisch?
Das WDK wird als "Windows 7/2008 Server R2 WDK" (kurz auch nach seiner Buildnummer) bezeichnet. Auf der von Dir verlinkten Webseite kann man nachlesen:
| Zitat: |
How to Get the WDK
The Windows Driver Kit (WDK) 7.0.0 is available for download. The WDK 7.0.0 contains headers, libraries, build tools, build environments, code samples, documentation, and other tools that software developers use to create drivers and kernel software.
This topic applies to the following versions of Windows:
Windows 7
Windows Vista
Windows XP
Windows Server 2008 R2
Windows Server 2008
Windows Server 2003 |
Flamefire hat folgendes geschrieben : |
| auf jedenfall konnte ich mittels der wxp buildumgebung aus genau diesem wdk wxp treiber compilen und ausführen (laden...wie auch immer) |
Aendert nix daran welches WDK Du benutzt. Und genau das zaehlt, wenn du DDKBUILD benutzt, da es ueberprueft ob die angeforderte Zielplattform bspw. von diesem DDK/WDK unterstuetzt wird.
Ich warte zwei Tools die mit den DDKs/WDKs zu tun haben. Du darfst mir ruhig glauben, dass ich ein Minimum an Ahnung habe was ich tue - auch wenn du scheinbar erstmal alles bezweifelst.
Flamefire hat folgendes geschrieben : |
EDIT: oh...grad 2 was intressantes aus dem startmenü erfahren:
Verknüpfung: C:\WINDOWS\system32\cmd.exe /k C:\WinDDK\bin\setenv.bat C:\WinDDK\ chk x86 WXP
name: WDK 7600.16385.0 |
Sieh an ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!