DbgPrint nicht sichtbar[geloest]

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Ich hatte die letzten paar Tage wenig zu tun und dachte mir ich schnuppere mal ganz unverbindlich in die Systemprogrammierung rein.
Ich hab das mal hier und nicht in die Codesection gepackt, da ich der Meinung bin das mein Problem in der Vorgehensweise und nicht im Code begruendet ist.
Ich benutze DbgView und InstDrv um einen kleinen Hello World Treiber zu laden.
Code:
#include <ntddk.h>

NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistryPath)
{
DbgPrint("hello world!");
return STATUS_SUCCESS;
}
DbgView habe ich so eingestellt das er alle Dbg-Nachrichten aufzeigen soll.
Als Compilre benutze ich den DDK von Windows in der aktuellen Version, im Build Enviroment,Checked Build Modus, Betriebssytem ist Windows XP (SP3) sowohl bei DDK ausgewaehlt,als auch auf meinem Rechner.
Mein Problem ist nun das ich keinen DgbOutput sehe.

mfg

sw33t
 
Hi,
hast du denn deinen Treiber auch gestartet? Meines Wissens nach registrierst du ihn mit "-install" nur, du müsstest ihn aber auch mit "-start" noch starten.

mfg
 
Ja gestartet habe ich ihn auch.

InstallDriver.exe -View <servicename>

gibt auch aus das er laeuft.
 
Ein paar Grundlegende Sachen zur Treiberentwicklung:
1. Benutze eine VM mit WinDBG (mit Symbols, der zeigt dir auch die Dbg-Ausgabe an)
2. Benutze den OSRLoader (gibts auf osronline)
3. Schau dir mal DDKWizard an (hilft WinDDK in Vc++ zu integrieren und liefert ein nettes Buildscript)

Mit diesen Hilfsmitteln kann dann auch nichts mehr schief gehen ;) Was dein Problem angeht, guck mal ob der Treiber geladen wurde (zb mit Rkunhooker) InstDrv ist nicht so das Gelbe vom Ei.
 
Vielen dank!
Vor allem xrayn.
Es lag nicht nur am Loader sondern auch noch am Pfad.
der OSRloader konnte den Pfad nicht aufloesen.
nachdem ist es in %SystemRoot%\system32 gepackt hatte lief es, und ich bekam auch eine Ausgabe.
Leider will ich nicht immer meine Treiber in C:\Windows\system32 packen um sie zu testen.
und der OSRloader konnte \??\F:\treibertest\hallowelt.sys nicht aufloesen auch nicht nachdem ich \??\ entfernt hatte(in der Registry direkt den Imagepath geaendert.
Gibt es irgendeine Moeglichkeit den Pfad so anzugeben das ich den Treiber aus einem beliebigen Verzeichniss laden und testen kann?
mfg

sw33t

//edit
falls der DDKWizard,wiedererwartend(da es ja eher auf Integierrung in eine IDE abzuziehlen scheint), das zu leisten vermag ist bitte ich die Frage zu entschuldigen,denn ich habe ihn noch nicht getestet.
 
Also eigentlich drueckste beim OSRLoader einfach nur auf "Browse" suchst da den Treiber, dann auf "Register Service" und dann "Start Service".
 
Hab ich ja gemacht, er registriert ihn auch aber wenn ich auf Service starten klicke dann sagt er mir das er den Pfad nicht aufloesen kann.
Pfad ist halt:
F:\.....\hallowelt.sys
Und da ich unter windows keinen Absoluten Pfad von %SystemRoot% nach F:\...\ legen kann weiss ich gerade nicht wie ich das machen soll.
In der Registry steht halt unter ImagePath \??\F:\...\ ich finde das \??\ schon etwas suspekt.
Wenn ich meinen Treiber allerdings nach C:Windows(sprich %SystemRoot%) kopiere, genauer in system32 laeuft es.
Auch wenn ich mein den Treiber auf C:\ oder einem Unterordner ablege kann ich den Treiber registrieren und er startet auch.
Ich bin also allem Anschein nach an C:\ gefesselt und wuesste ganz gerne ob und wie ich das ganze auch auf einer anderen Partition handhaben kann.
mfg

sw33t
 
Afaik ist man nicht auf C: gefesselt, sondern nur auf Verzeichnisse ohne Leerzeichen
D.h. du kannst zum Beispiel keine Treiber vom Desktop laden weil im Pfad ein Leerzeichen vorkommt (C:\Dokumente und Einstellungen\...)
Zumindest war es bei mir damals so.

Mfg Inliferty
Ps:
Desweiteren wundert es mich das dein Treiber etwas in DbgView ausspuckt, wenn du die Option "Pass-through" aktiviert hast.
 
Vielen dank fuer den Hinweis auf Passthrough.
Hast recht, ich bin nicht nur an C:\ gefesselt, lag einfach daran das ich mal den PC runtergefahren habe ohne den Treiber vorher zu unregistrieren.mfg

sw33t

//edit:
Kleiner Nachtrag für die Leute welche sich auch für Treiberprogrammierung interessieren:
Beim DDKWizard wird nur ein Skript eingebunden, man muss immer noch die IDE mit den Pfaden zur WinDDK-Installation füttern.
Dies alles nimmt einem VisualDDK ab.
Es macht die ganze sache etwas einfacher.
 
Zurück
Oben