Condividi tramite


Classe CAtlExeModuleT

Questa classe rappresenta il modulo per un'applicazione.

Sintassi

template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>

Parametri

T
Classe derivata da CAtlExeModuleT.

Membri

Costruttori pubblici

Nome Descrizione
CAtlExeModuleT::CAtlExeModuleT Costruttore.
CAtlExeModuleT::~CAtlExeModuleT Distruttore.

Metodi pubblici

Nome Descrizione
CAtlExeModuleT::InitializeCom Inizializza COM.
CAtlExeModuleT::P arseCommandLine Analizza la riga di comando ed esegue la registrazione, se necessario.
CAtlExeModuleT::P ostMessageLoop Questo metodo viene chiamato immediatamente dopo l'uscita del ciclo di messaggi.
CAtlExeModuleT::P reMessageLoop Questo metodo viene chiamato immediatamente prima di immettere il ciclo di messaggi.
CAtlExeModuleT::RegisterClassObjects Registra l'oggetto classe.
CAtlExeModuleT::RevokeClassObjects Revoca l'oggetto classe.
CAtlExeModuleT::Run Questo metodo esegue il codice nel modulo EXE per inizializzare, eseguire il ciclo di messaggi e pulire.
CAtlExeModuleT::RunMessageLoop Questo metodo esegue il ciclo di messaggi.
CAtlExeModuleT::UninitializeCom Annulla l'inizializzazione di COM.
CAtlExeModuleT::Unlock Decrementa il conteggio dei blocchi del modulo.
CAtlExeModuleT::WinMain Questo metodo implementa il codice necessario per eseguire un file EXE.

Membri dati pubblici

Nome Descrizione
CAtlExeModuleT::m_bDelayShutdown Flag che indica che deve essere presente un ritardo di arresto del modulo.
CAtlExeModuleT::m_dwPause Valore di pausa usato per assicurarsi che tutti gli oggetti vengano rilasciati prima dell'arresto.
CAtlExeModuleT::m_dwTimeOut Valore di timeout usato per ritardare lo scaricamento del modulo.

Osservazioni:

CAtlExeModuleT rappresenta il modulo per un'applicazione (EXE) e contiene codice che supporta la creazione di un file EXE, l'elaborazione della riga di comando, la registrazione di oggetti classe, l'esecuzione del ciclo di messaggi e la pulizia all'uscita.

Questa classe è progettata per migliorare le prestazioni quando gli oggetti COM nel server EXE vengono creati ed eliminati continuamente. Dopo il rilascio dell'ultimo oggetto COM, il file EXE attende una durata specificata dal membro dati CAtlExeModuleT::m_dwTimeOut . Se non è presente alcuna attività durante questo periodo (ovvero non vengono creati oggetti COM), viene avviato il processo di arresto.

Il membro dati CAtlExeModuleT::m_bDelayShutdown è un flag usato per determinare se l'exe deve usare il meccanismo definito in precedenza. Se è impostato su false, il modulo terminerà immediatamente.

Per altre informazioni sui moduli in ATL, vedere Classi di moduli ATL.

Gerarchia di ereditarietà

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Requisiti

Intestazione: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

Costruttore.

CAtlExeModuleT() throw();

Osservazioni:

Se non è stato possibile inizializzare il modulo EXE, WinMain restituirà immediatamente senza ulteriori elaborazioni.

CAtlExeModuleT::~CAtlExeModuleT

Distruttore.

~CAtlExeModuleT() throw();

Osservazioni:

Libera tutte le risorse allocate.

CAtlExeModuleT::InitializeCom

Inizializza COM.

static HRESULT InitializeCom() throw();

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Osservazioni:

Questo metodo viene chiamato dal costruttore e può essere sottoposto a override per inizializzare COM in modo diverso dall'implementazione predefinita. L'implementazione predefinita chiama CoInitializeEx(NULL, COINIT_MULTITHREADED) o CoInitialize(NULL) dipende dalla configurazione del progetto.

L'override di questo metodo richiede in genere l'override di CAtlExeModuleT::UninitializeCom.

CAtlExeModuleT::m_bDelayShutdown

Flag che indica che deve essere presente un ritardo di arresto del modulo.

bool m_bDelayShutdown;

Osservazioni:

Per informazioni dettagliate, vedere Panoramica di CAtlExeModuleT.

CAtlExeModuleT::m_dwPause

Valore di pausa usato per assicurarsi che tutti gli oggetti siano passati prima dell'arresto.

DWORD m_dwPause;

Osservazioni:

Modificare questo valore dopo aver chiamato CAtlExeModuleT::InitializeCom per impostare il numero di millisecondi usati come valore di pausa per arrestare il server. Il valore predefinito è 1.000 millisecondi.

CAtlExeModuleT::m_dwTimeOut

Valore di timeout usato per ritardare lo scaricamento del modulo.

DWORD m_dwTimeOut;

Osservazioni:

Modificare questo valore dopo aver chiamato CAtlExeModuleT::InitializeCom per definire il numero di millisecondi usati come valore di timeout per arrestare il server. Il valore predefinito è 5000 millisecondi. Per altri dettagli, vedere Panoramica di CAtlExeModuleT .

CAtlExeModuleT::P arseCommandLine

Analizza la riga di comando ed esegue la registrazione, se necessario.

bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();

Parametri

lpCmdLine
Riga di comando passata all'applicazione.

pnRetCode
HRESULT corrispondente alla registrazione (se è stata eseguita).

Valore restituito

Restituisce true se l'applicazione deve continuare a essere eseguita; in caso contrario, false.

Osservazioni:

Questo metodo viene chiamato da CAtlExeModuleT::WinMain e può essere sottoposto a override per gestire le opzioni della riga di comando. L'implementazione predefinita controlla gli argomenti della riga di comando /RegServer e /UnRegServer ed esegue la registrazione o l'annullamento della registrazione.

CAtlExeModuleT::P ostMessageLoop

Questo metodo viene chiamato immediatamente dopo l'uscita del ciclo di messaggi.

HRESULT PostMessageLoop() throw();

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Osservazioni:

Eseguire l'override di questo metodo per eseguire la pulizia personalizzata dell'applicazione. L'implementazione predefinita chiama CAtlExeModuleT::RevokeClassObjects.

CAtlExeModuleT::P reMessageLoop

Questo metodo viene chiamato immediatamente prima di immettere il ciclo di messaggi.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parametri

nShowCmd
Valore passato come parametro nShowCmd in WinMain.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Osservazioni:

Eseguire l'override di questo metodo per aggiungere codice di inizializzazione personalizzato per l'applicazione. L'implementazione predefinita registra gli oggetti classe.

CAtlExeModuleT::RegisterClassObjects

Registra l'oggetto classe con OLE in modo che altre applicazioni possano connettersi.

HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();

Parametri

dwClsContext
Specifica il contesto in cui deve essere eseguito l'oggetto classe. I valori possibili sono CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER o CLSCTX_LOCAL_SERVER.

dwFlags
Determina i tipi di connessione all'oggetto classe. I valori possibili sono REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE o REGCLS_MULTI_SEPARATE.

Valore restituito

Restituisce S_OK in caso di esito positivo, S_FALSE se non sono presenti classi da registrare o un errore HRESULT in caso di errore.

CAtlExeModuleT::RevokeClassObjects

Rimuove l'oggetto classe.

HRESULT RevokeClassObjects() throw();

Valore restituito

Restituisce S_OK in caso di esito positivo, S_FALSE se non sono presenti classi da registrare o un errore HRESULT in caso di errore.

CAtlExeModuleT::Run

Questo metodo esegue il codice nel modulo EXE per inizializzare, eseguire il ciclo di messaggi e pulire.

HRESULT Run(int nShowCmd = SW_HIDE) throw();

Parametri

nShowCmd
Specifica la modalità di visualizzazione della finestra. Questo parametro può essere uno dei valori descritti nella sezione WinMain . Il valore predefinito è SW_HIDE.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Osservazioni:

Questo metodo può essere sottoposto a override. Tuttavia, in pratica è preferibile eseguire l'override di CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop o CAtlExeModuleT::P ostMessageLoop .

CAtlExeModuleT::RunMessageLoop

Questo metodo esegue il ciclo di messaggi.

void RunMessageLoop() throw();

Osservazioni:

Questo metodo può essere sottoposto a override per modificare il comportamento del ciclo di messaggi.

CAtlExeModuleT::UninitializeCom

Annulla l'inizializzazione di COM.

static void UninitializeCom() throw();

Osservazioni:

Per impostazione predefinita, questo metodo chiama semplicemente CoUninitialize e viene chiamato dal distruttore. Eseguire l'override di questo metodo se si esegue l'override di CAtlExeModuleT::InitializeCom.

CAtlExeModuleT::Unlock

Decrementa il conteggio dei blocchi del modulo.

LONG Unlock() throw();

Valore restituito

Restituisce un valore che può essere utile per la diagnostica o il test.

CAtlExeModuleT::WinMain

Questo metodo implementa il codice necessario per eseguire un file EXE.

int WinMain(int nShowCmd) throw();

Parametri

nShowCmd
Specifica la modalità di visualizzazione della finestra. Questo parametro può essere uno dei valori descritti nella sezione WinMain .

Valore restituito

Restituisce il valore restituito dell'eseguibile.

Osservazioni:

Questo metodo può essere sottoposto a override. Se si esegue l'override di CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop o CAtlExeModuleT::RunMessageLoop non offre una flessibilità sufficiente, è possibile eseguire l'override della WinMain funzione usando questo metodo.

Vedi anche

Esempio ATLDuck
Classe CAtlModuleT
Classe CAtlDllModuleT
Cenni preliminari sulla classe