Compartir a través de


Clase CAtlExeModuleT

Esta clase representa el módulo de una aplicación.

Sintaxis

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

Parámetros

T
La clase se deriva de CAtlExeModuleT.

Miembros

Constructores públicos

Nombre Descripción
CAtlExeModuleT::CAtlExeModuleT Constructor .
CAtlExeModuleT::~CAtlExeModuleT El destructor .

Métodos públicos

Nombre Descripción
CAtlExeModuleT::InitializeCom Inicializa COM.
CAtlExeModuleT::ParseCommandLine Analiza la línea de comandos y realiza el registro si es necesario.
CAtlExeModuleT::PostMessageLoop Se llama a este método inmediatamente después de que se cierre el bucle de mensajes.
CAtlExeModuleT::PreMessageLoop Se llama a este método inmediatamente antes de escribir el bucle de mensajes.
CAtlExeModuleT::RegisterClassObjects Registra el objeto de clase.
CAtlExeModuleT::RevokeClassObjects Revoca el objeto de clase.
CAtlExeModuleT::Run Este método ejecuta código en el módulo EXE para inicializar, ejecutar el bucle de mensajes y hacer limpieza.
CAtlExeModuleT::RunMessageLoop Este método ejecuta el bucle de mensajes.
CAtlExeModuleT::UninitializeCom Anula la inicialización de COM.
CAtlExeModuleT::Unlock Disminuye el recuento de bloqueos del módulo.
CAtlExeModuleT::WinMain Este método implementa el código necesario para ejecutar un EXE.

Miembros de datos públicos

Nombre Descripción
CAtlExeModuleT::m_bDelayShutdown Marca que indica que debería haber un retraso al apagar el módulo.
CAtlExeModuleT::m_dwPause Valor de pausa utilizado para garantizar que todos los objetos se liberan antes del apagado.
CAtlExeModuleT::m_dwTimeOut Valor de tiempo de espera utilizado para retrasar la descarga del módulo.

Comentarios

CAtlExeModuleT representa el módulo de una aplicación (EXE) y contiene código que admite la creación de un EXE, el procesamiento de la línea de comandos, el registro de objetos de clase, la ejecución del bucle de mensajes y la limpieza al salir.

Esta clase está diseñada para mejorar el rendimiento cuando los objetos COM del servidor EXE se crean y destruyen continuamente. Una vez liberado el último objeto COM, el EXE espera una duración especificada por el miembro de datos CAtlExeModuleT::m_dwTimeOut. Si no hay ninguna actividad durante este período (es decir, no se crean objetos COM), se inicia el proceso de apagado.

El miembro de datos CAtlExeModuleT::m_bDelayShutdown es una marca utilizada para determinar si el EXE debe usar el mecanismo definido anteriormente. Si se establece en “false”, el módulo finalizará inmediatamente.

Para obtener más información sobre los módulos de ATL, consulte Clases de módulo de ATL.

Jerarquía de herencia

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Requisitos

Encabezado: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

Constructor .

CAtlExeModuleT() throw();

Comentarios

Si no se pudo inicializar el módulo EXE, WinMain hará la devolución inmediatamente sin ningún procesamiento adicional.

CAtlExeModuleT::~CAtlExeModuleT

El destructor .

~CAtlExeModuleT() throw();

Comentarios

Libera todos los recursos asignados.

CAtlExeModuleT::InitializeCom

Inicializa COM.

static HRESULT InitializeCom() throw();

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Se llama a este método desde el constructor y se puede invalidar para inicializar COM de una manera diferente a la implementación predeterminada. La implementación predeterminada llama a CoInitializeEx(NULL, COINIT_MULTITHREADED) o a CoInitialize(NULL) en función de la configuración del proyecto.

Normalmente, la invalidación de este método requiere invalidar CAtlExeModuleT::UninitializeCom.

CAtlExeModuleT::m_bDelayShutdown

Marca que indica que debería haber un retraso al apagar el módulo.

bool m_bDelayShutdown;

Comentarios

Consulte la información general de CAtlExeModuleT para obtener más detalles.

CAtlExeModuleT::m_dwPause

Valor de pausa utilizado para garantizar que no queda ningún objeto antes del apagado.

DWORD m_dwPause;

Comentarios

Cambie este valor después de llamar a CAtlExeModuleT::InitializeCom para establecer el número de milisegundos usados como valor de pausa para apagar el servidor. El valor predeterminado es 1000 milisegundos.

CAtlExeModuleT::m_dwTimeOut

Valor de tiempo de espera utilizado para retrasar la descarga del módulo.

DWORD m_dwTimeOut;

Comentarios

Cambie este valor después de llamar a CAtlExeModuleT::InitializeCom para definir el número de milisegundos usados como valor de tiempo de espera para apagar el servidor. El valor predeterminado es 5000 milisegundos. Consulte la información general de CAtlExeModuleT para obtener más detalles.

CAtlExeModuleT::ParseCommandLine

Analiza la línea de comandos y realiza el registro si es necesario.

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

Parámetros

lpCmdLine
La línea de comandos pasada a la aplicación.

pnRetCode
El valor HRESULT correspondiente al registro (si tuvo lugar).

Valor devuelto

Devuelve “true” si la aplicación debe seguir ejecutándose; de lo contrario, devuelve “false”.

Comentarios

Se llama a este método desde CAtlExeModuleT::WinMain y se puede invalidar para controlar los modificadores de línea de comandos. La implementación predeterminada comprueba los argumentos de la línea de comandos /RegServer y /UnRegServer y realiza el registro o la anulación del registro.

CAtlExeModuleT::PostMessageLoop

Se llama a este método inmediatamente después de que se cierre el bucle de mensajes.

HRESULT PostMessageLoop() throw();

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Invalide este método para realizar la limpieza de aplicaciones personalizada. La implementación predeterminada llama a CAtlExeModuleT::RevokeClassObjects.

CAtlExeModuleT::PreMessageLoop

Se llama a este método inmediatamente antes de escribir el bucle de mensajes.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parámetros

nShowCmd
Valor pasado como el parámetro nShowCmd en WinMain.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Invalide este método para agregar código de inicialización personalizado a la aplicación. La implementación predeterminada registra los objetos de clase.

CAtlExeModuleT::RegisterClassObjects

Registra el objeto de clase con OLE para que otras aplicaciones puedan conectarse a él.

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

Parámetros

dwClsContext
Especifica el contexto en el que se va a ejecutar el objeto de clase. Los valores posibles son CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER o CLSCTX_LOCAL_SERVER.

dwFlags
Determina los tipos de conexión al objeto de clase. Los valores posibles son REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE, o REGCLS_MULTI_SEPARATE.

Valor devuelto

Devuelve S_OK si se ha realizado correctamente, S_FALSE si no hay ninguna clase que registrar o un error HRESULT en caso de error.

CAtlExeModuleT::RevokeClassObjects

Quita el objeto de clase.

HRESULT RevokeClassObjects() throw();

Valor devuelto

Devuelve S_OK si se ha realizado correctamente, S_FALSE si no hay ninguna clase que registrar o un error HRESULT en caso de error.

CAtlExeModuleT::Run

Este método ejecuta código en el módulo EXE para inicializar, ejecutar el bucle de mensajes y hacer limpieza.

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

Parámetros

nShowCmd
Especifica cómo se va a mostrar la ventana. Este parámetro puede ser uno de los valores descritos en la sección WinMain. Su valor predeterminado es SW_HIDE.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Este método no se puede invalidar. Sin embargo, en la práctica es mejor invalidar CAtlExeModuleT::PreMessageLoop, CAtlExeModuleT::RunMessageLoop o CAtlExeModuleT::PostMessageLoop en su lugar.

CAtlExeModuleT::RunMessageLoop

Este método ejecuta el bucle de mensajes.

void RunMessageLoop() throw();

Comentarios

Este método se puede invalidar para cambiar el comportamiento del bucle de mensajes.

CAtlExeModuleT::UninitializeCom

Anula la inicialización de COM.

static void UninitializeCom() throw();

Comentarios

De manera predeterminada, este método simplemente llama a CoUninitialize y se le llama desde el destructor. Invalide este método si invalida CAtlExeModuleT::InitializeCom.

CAtlExeModuleT::Unlock

Disminuye el recuento de bloqueos del módulo.

LONG Unlock() throw();

Valor devuelto

Devuelve un valor que puede ser útil para los diagnósticos o las pruebas.

CAtlExeModuleT::WinMain

Este método implementa el código necesario para ejecutar un EXE.

int WinMain(int nShowCmd) throw();

Parámetros

nShowCmd
Especifica cómo se va a mostrar la ventana. Este parámetro puede ser uno de los valores descritos en la sección WinMain.

Valor devuelto

Devuelve el valor devuelto del ejecutable.

Comentarios

Este método no se puede invalidar. Si reemplazar CAtlExeModuleT::PreMessageLoop, CAtlExeModuleT::PostMessageLoop o CAtlExeModuleT::RunMessageLoop no proporciona suficiente flexibilidad, se puede invalidar la función WinMain mediante este método.

Consulte también

Ejemplo de ATLDuck
CAtlModuleT (clase)
CAtlDllModuleT (clase)
Información general sobre la clase