CREATE_SUSPENDED: CRT initialisiert?



  • Hallo!

    Eine kurze Frage zu Windows:
    Wenn ein Prozess mit CREATE_SUSPENDED erstellt wird, ist dann die CRT schon initialisiert?

    Hintergrund ist, dass ich direkt danach eine DLL mittels CreateRemoteThread-Methode in den Prozess lade, und nun wissen möchte, ob ich in der DllMain() schon die CRT benutzen darf.

    Ich habe schon DLL_bestprac.doc gelesen, da steht zB:

    DLL_bestprac.doc schrieb:

    You should never perform the following tasks from within DllMain:
    ...
    • Use the memory management function from the dynamic C Run-Time (CRT). If the CRT DLL is not initialized, calls to these functions can cause the process to crash.

    Das ist blöd, ich wollte geschmeidig mit std::fstream und operator new eine Datei binär einlesen...

    In welchen Fällen wäre die CRT denn noch nicht initialisiert?
    Bis jetzt hat es bei mir jedenfalls noch keinen Crash gegeben...

    Danke!


  • Mod

    Wenn DllMain der CRT aufgerufen wird, ist die CRT bereits initialisiert.
    Ich wüsste keinen Grnd warum die CT nicht initialisiert sein sollte, wenn Du nicht durch eigene DllMain die CRT Routinen außer Kraft setzt!

    Dennoch gibt es keine Garantie, dass alle Funktionen abeiten, denn der Loader-Lock mag verhindern, dass anderer Threads in die DllMain eintreten können.


Anmelden zum Antworten