Bist du dir denn sicher, dass GetMainThreadId dir auch immer den Mainthread zurückgibt?
Du gehst ja davon aus, dass der erste Thread der für den Prozess gefunden wird der Mainthread ist. Ist das irgendwo dokumentiert?
Kann mir vorstellen, dass du manchmal einfach im falschen Thread landest.
Da es offiziell nichtmal sowas wie einen "Mainthread" gibt, ist deine Frage durchaus berechtigt
Ich gehe aber mal davon aus, dass er den Prozess suspendet erstellt und dann direkt seine
Dll injected. In diesem Falle existiert eh nur ein einziger Thread. Allerdings kann er sich dann einiges an Arbeit ersparen, indem er einfach ein wenig anders vorgeht .. deshalb auch meine Frage, was er denn eigentlich vorhat.
@Clowdy:
Mit
QueueUserAPC kannst du einen
APC registrieren, der netterweise direkt nach dem Resumen ausgeführt wird (natürlich nur in dem Falle, dass du den Prozess tatsächlich wie von mir vermutet im suspended State erstellst). Dieser
APC würde dann auch im Kontext des angegebenen Threads ausgeführt (das scheint dir ja scheinbar wichtig zu sein).