Also, Unterschied Programm
DLL.
Ein Programm enthält allein ausführbaren Code. Der Loader läd die Anwendung in den Speicher, ruft CreateProcess auf, um den Prozess zu erzeugen (Adressraum bereitstellen, Kernel-Objekt erzeugen). Dann folgt ein Aufruf von CreateThread, um den primären Thread zu starten, der den eigentlichen Code ausführt. Der Prozess selbst führt keinen Code aus, er dient nur als Container für die Threads, welche den eigentlichen Programm-Code dann ausführen.
Eine
DLL kann selbst keinen Code ausführen. Eine
DLL enthält nur Code der von einem Prozess / Thread ausgeführt werden kann. Dazu wird die
DLL in den Adressraum des Prozesses geladen, wo durch der Thread dann Zugriff auf die exportierten Codeteile (Funktionen) der
DLL hat.
Was man aber mache kann ist: Die
DLL laden und einen Thread starten dessen Code in der
DLL liegt. Auf alle Fälle brauchst du einen Prozess, der den Adressraum zur Verfügung stellt und einen Thread, der die
DLL läd und den Code der
DLL ausführt.
Hmpf, war einer schneller.