Wie kompiliert man Treiber?



  • Hallo! Ich habe eine Frage zu Treibern unter windows NT. Wie kompiliert man sie? Wie installiert man sie? Wenn ich die erweiterung einer .exe datei in .sys ändere, wäre das dann schon ein treiber? Oder sind sie anderes aufgebaut?



  • Du brauchst das DDK (bzw. WDK). => www.gidf.de



  • ja ddk habe ich installiet. Aber irgenwie klappts nicht mit der konfiguration. Bei ddk ist ja ein compiler dabei nähmlich cl.exe, wenn ich mit dem eine datei mit folgendem inhalt

    #include <ntddk.h>
    
    NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath)
    {
    WCHAR xName[]=L"\\Device\\Port";
    
    DbgPrint("Hello World! \n");
    DbgPrint("Port: Link: %s \n", xName);
    
        return STATUS_SUCCESS;
    }
    

    zu compilieren versuche, sagt mir der compiler dass "ntddk.h" nicht vorhanden sei. nun weiss ich nicht wie ich den compiler konfiguriere, dass er weiss wo die include-dateien sind.
    Parallel habe ich einen anderen compiler, könnte ich den auch benutzen?



  • cl -I<ddkdir>/include [files]
    

    darüber hinaus würde ich mich über makefiles schlau machen, weils irgendwann zuviel wird 😉



  • Du brauchst ein "makefile". Schau Dir noch mal die Samples an, da gibt es hunderte Beispiele... such Dir ein passendes Beispiel und versuche den Code dort zu verstehen...



  • Danke euch! Ihr seid die besten!



  • Eine Frage habe ich aber doch noch:
    warum kommen bei dem code

    #include <winsock2.h>
    #include <ntddk.h>
    
    NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath)
    {
        return STATUS_SUCCESS;
    }
    

    158 fehler?



  • Nur mal so eine dumme Frage, aber was bringen mir Treiber eigentlich, könnte mir vieleicht jemand ein Beispiel nennen wofür ich mir einen Treiber schreiben müsste, was ich nicht direct in meinem Programm Code machen könnte?



  • @Code-Walker: Hardware ansprechen (Interrupts, Ports, ...), andere Treiber aufrufen (direkt IPSs senden, nicht per DeviceIoControl), System Devices ("Geräte") zur Verfügung stellen, ...

    Natürlich auch viele weniger sinnvolle Sachen wie blöd Speicher überschreiben oder das System sonstwie "kaputtmachen", etc.



  • Treiber sind doch eine art Schnittstellen zwischen Hardware und Software nehm ich an. Sagen wir ich entwickle ne eigene Hardware, welche ich bspw. über den RS232 an den PC anschliese und ich einen Treiber zur verfügung stellen möchte.

    Dann schreib ich doch einfach ne Dll welche funktionen der hardware zur verfügung stellt oder? und die ich in ner Software einbinde!?



  • Du darfst keine SDK (winsock2.h) und DDK-Dinge (ntddk.h) mischen!



  • MorgenStund schrieb:

    Sagen wir ich entwickle ne eigene Hardware, welche ich bspw. über den RS232 an den PC anschliese und ich einen Treiber zur verfügung stellen möchte.

    Dafür brauchst Du keinen Treiber, da Windows schon einen Treiber für die serielle Schnittstelle hat...

    MorgenStund schrieb:

    Dann schreib ich doch einfach ne Dll welche funktionen der hardware zur verfügung stellt oder? und die ich in ner Software einbinde!?

    Genau. Das hat aber mit einem *Treiber* nun mal überhaupt nichts zu tun! Es ist eine reine "User-Mode" DLL.



  • Achsoo... d.h. geräte welche ich an nem USB port stöpsle liefern mir keine treiber, sonder user-mode dll,s damit mit dem gerät kommunizieren kann.

    treiber kommunizieren direkt mit der hardware, interrupts etc. einer steckkarte oder? gibt da nen beispiel wo man sich das mal anschauen kann? würde mich schon mal interesssierne 👍



  • Treiber sind Programme die im Kernel-Mode ausgeführt werden. Dies würde ich gerne haben. Damitm kann ich direkt die hardware ansprechen. Z.B. habe ich eine leuchtdiode am Laptop, die soll leuchten wenn ich ungelesene mails habe. Wenn ich nun die leuchtdiode ansprechen kann, hkann ich die für was anderes nutzen.



  • Hier ist ein schöner Tutorial:
    http://www.wischrop-net.de/nt/index_treiber.htm



  • Es sollte schwer erden die "Leuhtdiode" an zu sprechen, bin mir nicht sicher ob die Computisch sprechen / verstehen kann 😛

    kannst ja einen netten Processor Fragen ob er euch beim übersetzen hilft^^

    *Sry, musste jetzt sein^^*



  • Es sollte schwer erden die "Leuhtdiode" an zu sprechen, bin mir nicht sicher ob die Computisch sprechen / verstehen kann 😛

    kannst ja einen netten Processor Fragen ob er euch beim übersetzen hilft^^

    *Sry, musste jetzt sein^^*

    Nehmen wir an ich hab nen Mircochip, welcher eingänge, ausgänge, timer ,interrupts etc. hat. Ein ausgang ist an eine LED angeschlossen.. dann könnte im code mit der LED (I/O) arbeiten und "sprechen". Sprich setzen , rücksetzen, abfragen..



  • Sprich "übersetzen".



  • was übersetzen, man muss alles übersetzen, es sei den man coded in assambler!!!



  • MorgenStund schrieb:

    Achsoo... d.h. geräte welche ich an nem USB port stöpsle liefern mir keine treiber, sonder user-mode dll,s damit mit dem gerät kommunizieren kann.

    Es gibt verschiedene Arten von USB Geräten...

    MorgenStund schrieb:

    treiber kommunizieren direkt mit der hardware, interrupts etc. einer steckkarte oder?

    Ja

    MorgenStund schrieb:

    gibt da nen beispiel wo man sich das mal anschauen kann? würde mich schon mal interesssierne 👍

    Ahh... ich dachte Du hast das DDK (WDK) installiert; das sind "tausende" Beispiele dabei...


Log in to reply