Treiberentwicklung mit VS2008
-
Hallo,
ich beschäftige mich seit ein paar Wochen mit der Programmierung von Treibern. Wollt halt mal was neues lernen;-)
Nun stehe ich vor einem Problem. Ich würde gerne die Visual Studios 2008 Pro für die Entwicklung benutzen. Doch so einfach geht das ja nicht und deswegen bin ich mal nach diesem Tutorial vorgegangen:
http://www.codeproject.com/KB/winsdk/vs2008_and_drivers.aspx
Dort wird beschrieben, wie die VS2008 zu konfigurieren sind um einen Treiber zu compilieren. Zudem habe ich auch im Projekt die entsprechenden Pfade zu den bin,lib und inc Ordnern hinterlegt.
Wenn ich aber nun mein sinnloses Beispiel compilieren will hagelt es Fehlermeldungen. Das ist mein Code:#include <ddk\ntddk.h> NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) { return STATUS_UNSUCCESSFUL; }Die Fehlermeldungen werden in den Headern von Microsoft verursacht. Erstens geh ich doch jetzt nicht hin und fange an diesen Wust zu korrigieren und zweitens...Wenn die das von M$ so machen dann wird das ja wohl irgendwie Sinn haben. Kann es sein, dass eine Einstellung in den VS nicht korrekt ist?
Hier ist mal ein Codefragment, dass einen Fehler(nach der Liste unten ist es der Fehler 1) auslöst:
EXCEPTION_DISPOSITION __cdecl _except_handler ( _In_ struct _EXCEPTION_RECORD *_ExceptionRecord, _In_ void * _EstablisherFrame, _Inout_ struct _CONTEXT *_ContextRecord, _Inout_ void * _DispatcherContext );Und das ist beispielsweise der Fehler 83:
_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP int __cdecl isspace(_In_ int _C);Hier die Meldungen:
Fehler 1 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 60 Treiber Vorlage
Fehler 2 error C2085: 'ExceptionRecord': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 60 Treiber Vorlage
Fehler 3 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 61 Treiber Vorlage
Fehler 4 error C2085: 'EstablisherFrame': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 61 Treiber Vorlage
Fehler 5 error C2085: '_Inout_': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 62 Treiber Vorlage
Fehler 6 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 62 Treiber Vorlage
Fehler 7 error C2085: 'ContextRecord': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 62 Treiber Vorlage
Fehler 8 error C2085: '_Inout_': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 63 Treiber Vorlage
Fehler 9 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 63 Treiber Vorlage
Fehler 10 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 64 Treiber Vorlage
Fehler 11 error C2085: 'DispatcherContext': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 64 Treiber Vorlage
Fehler 12 error C2082: Neudefinition des formalen Parameters "_exception_code" C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 110 Treiber Vorlage
Fehler 13 error C2082: Neudefinition des formalen Parameters "_exception_info" C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 111 Treiber Vorlage
Fehler 14 error C2082: Neudefinition des formalen Parameters "_abnormal_termination" C:\Programme\Microsoft Visual Studio 9.0\VC\include\excpt.h 112 Treiber Vorlage
Fehler 15 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 94 Treiber Vorlage
Fehler 16 error C2054: Nach '_Check_return' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 17 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 18 error C2085: '_isctype_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 19 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 20 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 21 error C2085: '_In_': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 22 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 23 error C2085: 'Type': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 24 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 25 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 26 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 27 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 95 Treiber Vorlage
Fehler 28 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 96 Treiber Vorlage
Fehler 29 error C2086: 'int _Check_return': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 30 error C2054: Nach '_Check_return' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 31 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 32 error C2085: '_isalpha_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 33 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 34 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 35 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 36 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 37 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 38 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 97 Treiber Vorlage
Fehler 39 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 98 Treiber Vorlage
Fehler 40 error C2086: 'int _Check_return': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 41 error C2054: Nach '_Check_return_' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 42 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 43 error C2085: '_isupper_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 44 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 45 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 46 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 47 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 48 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 49 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 99 Treiber Vorlage
Fehler 50 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 100 Treiber Vorlage
Fehler 51 error C2086: 'int _Check_return_': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 52 error C2054: Nach '_Check_return_' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 53 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 54 error C2085: '_islower_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 55 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 56 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 57 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 58 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 59 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 60 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 101 Treiber Vorlage
Fehler 61 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 102 Treiber Vorlage
Fehler 62 error C2086: 'int _Check_return_': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 63 error C2054: Nach '_Check_return_' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 64 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 65 error C2085: '_isdigit_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 66 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 67 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 68 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 69 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 70 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 71 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 103 Treiber Vorlage
Fehler 72 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 104 Treiber Vorlage
Fehler 73 error C2086: 'int _Check_return_': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 74 error C2054: Nach '_Check_return_' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 75 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 76 error C2085: '_isxdigit_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 77 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 78 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 79 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 80 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 81 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 82 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 105 Treiber Vorlage
Fehler 83 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 106 Treiber Vorlage
Fehler 84 error C2086: 'int _Check_return_': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 85 error C2054: Nach '_Check_return_' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 86 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 87 error C2085: '_isspace_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 88 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 89 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 90 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 91 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner '_locale_t' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 92 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'Locale' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 93 error C2059: Syntaxfehler: ')' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 107 Treiber Vorlage
Fehler 94 error C2061: Syntaxfehler: Bezeichner '_Check_return' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 108 Treiber Vorlage
Fehler 95 error C2086: 'int _Check_return_': Neudefinition C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 96 error C2054: Nach '_Check_return_' muss '(' folgen C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 97 error C2143: Syntaxfehler: Es fehlt ')' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 98 error C2085: '_ispunct_l': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 99 error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ' C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 100 error C2085: 'C': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 101 error C2085: '_In_opt': Nicht in der formalen Parameterliste enthalten C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
Fehler 102 fatal error C1003: Mehr als 100 Fehler gefunden; Kompilierung wird abgebrochen. C:\Programme\Microsoft Visual Studio 9.0\VC\include\ctype.h 109 Treiber Vorlage
-
Irgend eine Header vergessen einzubinden?
-
Ich hatte mal sowas ähnliches,
bei mir lag es an der Reihenfolge der Pfade bei VC++ Directories.Genau kann ich mich leider nicht mehr erinnern, ist schon ein stück her.
Auf jeden fall ist die Reihenfolge der Includepfade unter VC++ Directories nicht ganz egal. Ändere Sie doch mal und schau was passiert.gruß
Sascha
-
Nein, Header wurden nicht vergessen. Die habe ich mit inkludiert. Hatte nämlich vorher den Fehler, dass irgendwelche Header nicht gefunden wurden:-)
An der Reihnfolge kann es auch nicht liegen. Hab soeben die Ordner rauf und runter geschoben. Jedoch brachte das kein sinnvolles Ergebnis. Um genau zu sein...Die Anzahl der Fehler hat sich NICHT mal verringert;-)
Andere Vorschläge?
Wenn ihr mehr Informationen braucht dann nur zu...
-
^^sieht so aus, als ob da tonnenweise #defines fehlen würden

-
Hier nochmal ein paar Screenshots von der Konfiguration
Allgemeine Konfiguration:
http://img257.imageshack.us/gal.php?g=driverpic1.jpgHier die Projektkonfiguration:
http://img101.imageshack.us/gal.php?g=driverpic4.jpgAuf einem ScreenShot ist zu sehen, dass ich C++ nehme. Die Einstellung, dass ich nur C verwende hat es aber auch nicht gebracht