Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 07.11.09 00:21 
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 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 user profile iconChristian S.: Topic aus Off Topic verschoben am Fr 06.11.2009 um 23:23
Assarbad
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.12.09 06:34 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde gerne mit VS 2008 Treiber erstellen.
Hab also das WinDDK runtergeladen und versucht:
Fehler àla
[...]

dann hab ichs mit DDKWizard probiert.
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 ...

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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 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.ä. ...

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
kann mir jemand weiterhelfen?
Vielleicht hilft ein VHS-Kurs "Englisch"?

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: 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
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.12.09 14:29 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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:

ausblenden 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.

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mi 02.12.09 16:49 
geladen hab ich das WDK von hier: www.microsoft.com/wh...ools/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
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.12.09 18:31 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
geladen hab ich das WDK von hier: www.microsoft.com/wh...ools/WDK/WDKpkg.mspx

verzeichnisstruktur sieht so aus:
Zitat:
C:\WinDDK>dir /b
bin
Dann willst Du:

ausblenden Quelltext
1:
W7BASE=C:\WinDDK					


Und in DDKWizard willst du Projekte fuer das Windows 7 WDK erstellen.
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: 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
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 02.12.09 20:09 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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


user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
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 ...