[VS 2008] Treiberloader --> Fehler in WDDK-Dateien
-
Hi,
ich habe anfangen wollen treiber zu programmieren. Als erstes wollte ich einen Loader (nur kopiert) kompilieren und mit nem simplen "Hello World" treiber anfangen.
Also: VS2008 installiert. WDDK installiert. Includes in den Optionen gesetzt (inc/api und inc/ddk)
Projekt erstellt. code reinkopiert, startenWas passiert: in standart header dateien bekomme ich fehler.
am ende herausgefunden, dass die ddk includes an das ende müssen.
Jetzt habe ich immer noch viele fehler: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.code beginnt so:
#include <windows.h> #include <stdio.h> #include <ntddk.h> #include "drvcomm.h" int main(int argc,char **argv) { printf("Opening service manager ...\n"); HANDLE scm=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE); if(scm) { printf("Creating service ...\n"); HANDLE svc=CreateService(scm,argv[1],argv[2],SERVICE_START | DELETE | SERVICE_STOP,SERVICE_KERNEL_DRIVER,
hab schon gesucht, aber nix gefunden
wer kann mir helfen?
-
Es ist nicht supported mit VS das DDK zu verwende!
-
und wie verwende ich das dann?
soll ich alles ohne IDE machen?denn das DDk ist von MS und VS auch...die wären also noch dümmer als erwartet, wenn das nicht gehn sollte
-
Du kannst die IDE verwenden um zu "Coden"... Du musst aber das DDK verwenden zum Compilieren! (makefiles!)
Siehe einfach die ganzen DDK-Beispiel!
-
Moin,
man kann auch im Studio bauen. Dafür sind folgende Anpassungen im Projekt nötig:
Includes erweitern um: d:\WINDDK\3790.1830\inc\mfc42;d:\WINDDK\3790.1830\inc\wxp
Vorkompilierte Header auf: precomp.hDieser Build dient nur dem Syntaxcheck und damit der einfacheren Auffindung der Fehler im Code. Dieser Code ist nicht lauffähig.
Um dann lauffähigen Code zu erhalten unter postbuildereignis eine Batch einbinden: $(InputDir)buildWithDDK.cmd
Aufbau der Batch sollte etwas so aussehen:
call d:\WINDDK\3790.1830\bin\setenv.bat D:\WINDDK\3790~1.183 WXP i386
call
call CD \Projektverzeichnis
call buildGruß Kai
-
es gibt ne Batch Datei um das DDK Build utility aus VS aufzurufen, aber wer programmiert Treiber schon in VS. Und dein Code da oben ist ganz normaler Winapi code. wieso includest du das ntddk.h? so ein service loader ist ne ganz normale userspace winapi anwendung. du kannst in userspace programmen nicht ntddk.h inkludieren. und ntddk.h ist sowieso veraltet, die solltest du sowieso ned inkludieren sondern wdm.h wenn du mit wdm arbeitest.