Pergunta

Qual é a diferença entre as três funções e quando usá-los ??

Foi útil?

Solução

WinMain é usado para uma aplicação (que termina exe) para indicar que o processo está a começar. Ele vai proporcionar argumentos de linha de comando para o processo e serve como o ponto de entrada de código de utilizador para um processo. WinMain (ou uma versão diferente do principal) é também uma função requerida. O sistema operacional precisa de uma função a ser chamada, a fim de start um processo em execução.

DllMain é usado para uma DLL para significar um monte de diferentes cenários. Mais notavelmente, ele será chamado quando

  1. O DLL é carregada para o processo: DLL_PROCESS_ATTACH
  2. A DLL é descarregado do processo: DLL_PROCESS_DETACH
  3. Um fio é iniciado no processo: DLL_THREAD_ATTACH
  4. Uma linha é finalizada no processo: DLL_THREAD_DETACH

DllMain é uma construção opcional e tem um monte de contratos implícitos associados. Por exemplo, você não deve estar chamando código que irá forçar outra DLL de carga. Em geral, é função bastante difícil de obter direito e deve ser evitado a menos que você tem uma necessidade muito específica para isso.

Outras dicas

main () significa que o seu programa é uma consola aplicação .

WinMain () significa que o programa é um GUI aplicação - -. isto é, ele exibe janelas e caixas de diálogo em vez de mostrar consola

DllMain () significa que o programa é um DLL . Uma DLL não pode ser executado diretamente, mas é usada por estes dois tipos de aplicações.

Por isso:

  • Use WinMain quando você está escrevendo um programa que vai exibir janelas etc.
  • Use DLLMain quando você escrever uma DLL.
  • Use principal em todos os outros casos.

[Adenda à sua pergunta]

Também não se esqueça do DllEntryPoint:

  • Quando o tempo de carregamento está envolvido o ponto de entrada é DllMain.
    (COM DLL servidor Ex. No processo).

  • Ao executar o tempo está envolvido o ponto de entrada é DllEntryPoint.
    (Ex. LoadLibrary são chamados).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top