Domanda

Qual è la differenza tra le tre funzioni e quando usarle ??

È stato utile?

Soluzione

WinMain viene utilizzato per un'applicazione (terminando .exe) per indicare che il processo è in fase di avvio. Fornirà gli argomenti della riga di comando per il processo e funge da punto di ingresso del codice utente per un processo. Anche WinMain (o una versione diversa di main) è una funzione richiesta. Il sistema operativo necessita di una funzione da chiamare per avviare un processo in esecuzione.

DllMain viene utilizzato per una DLL per indicare molti scenari diversi. In particolare, verrà chiamato quando

  1. La DLL viene caricata nel processo: DLL_PROCESS_ATTACH
  2. La DLL viene scaricata dal processo: DLL_PROCESS_DETACH
  3. Viene avviato un thread nel processo: DLL_THREAD_ATTACH
  4. Un thread è terminato nel processo: DLL_THREAD_DETACH

DllMain è un costrutto opzionale e ha molti contratti impliciti associati. Ad esempio, non si dovrebbe chiamare il codice che forza il caricamento di un'altra DLL. In generale, è abbastanza difficile ottenere la giusta funzione e dovrebbe essere evitato a meno che tu non ne abbia una necessità specifica.

Altri suggerimenti

main () indica che il tuo programma è una applicazione console .

WinMain () indica che il programma è una applicazione GUI - - cioè, mostra finestre e finestre di dialogo invece di mostrare la console.

DllMain () indica che il programma è una DLL . Una DLL non può essere eseguita direttamente, ma viene utilizzata dai due tipi di applicazioni precedenti.

Pertanto:

  • Utilizzare WinMain quando si scrive un programma che visualizzerà Windows ecc.
  • Usa DLLMain quando scrivi una DLL.
  • Usa main in tutti gli altri casi.

[Addendum alla tua domanda]

Inoltre, non dimenticare DllEntryPoint:

  • Quando è coinvolto il tempo di caricamento, il punto di ingresso è DllMain.
    (Es. DLL del server in-process COM).

  • Quando è coinvolto il tempo di esecuzione, il punto di ingresso è DllEntryPoint.
    (Es. LoadLibrary viene chiamato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top