Конференция "WinAPI" » AppInit_Dll - механизм работы.
 
  • guav © (06.07.08 12:02) [20]
    Можно сказать, что все статически импортированные dll загрузятся до кода ехе, однако с порядком их загрузки сложнее. Так, в своей DllMain не рекомендуют вызывать код работы с реестром, потому что advapi32.dll может быть загружена и позже (здесь  http://www.microsoft.com/whdc/driver/kernel/DLL_bestprac.mspx ).

    Теперь по сути. Для dll здесть http://support.microsoft.com/kb/94248 в Section 2 описана возможность объявить точку входа в dll не как DllMain, а как DllEntryPoint, при этом инициализация CRT и вызов конструкторов глобальных объектов будет делаться явным вызовом _CRT_INIT. Разумеется, можно что-то своё сделать до _CRT_INIT, не используя при этом CRT.
    ДУмаю что-то подобное возможно и для ехе.
  • guav © (06.07.08 12:06) [21]
    http://msdn.microsoft.com/en-us/library/f9t8842e(VS.71).aspx
    The function must be defined with the __stdcall calling convention. The parameters and return value must be defined as documented in the Win32 API for WinMain (for an .exe file) or DllEntryPoint (for a DLL). It is recommended that you let the linker set the entry point so that the C run-time library is initialized correctly, and C++ constructors for static objects are executed.
    Насколько я понял, можно не сделать то что recomended и инициализировать CRT явно.
  • Игорь Шевченко © (06.07.08 14:26) [22]

    > Началось все с того, что мне понадобился класс(структура)
    > в С++, который
    > инициализируется "самым первым" и последним финализируется.
    >


    AppInit_DLLs для этого не подходит
 
Конференция "WinAPI" » AppInit_Dll - механизм работы.
Есть новые Нет новых   [134434   +28][b:0][p:0]