WinMain используется для приложения (окончание .exe), чтобы указать, что процесс запускается. Он предоставит аргументы командной строки для процесса и послужит точкой входа пользовательского кода для процесса. WinMain (или другая версия main) также является обязательной функцией. ОС требуется функция для вызова, чтобы запустить процесс, запущенный.
DllMain используется для DLL, чтобы обозначить множество различных сценариев. В частности, он будет вызываться, когда
- DLL загружается в процесс: DLL_PROCESS_ATTACH
- DLL выгружается из процесса: DLL_PROCESS_DETACH
- В процессе запущен поток: DLL_THREAD_ATTACH
- Поток завершается в процессе: DLL_THREAD_DETACH
DllMain - необязательная конструкция, с которой связано множество неявных контрактов. Например, вы не должны вызывать код, который заставит другую DLL загружаться. В общем, это довольно сложная функция, чтобы получить права, и ее следует избегать, если у вас нет особой необходимости в этом