Класс CAtlExeModuleT

Этот класс представляет модуль для приложения.

Синтаксис

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

Параметры

T
Класс, производный от CAtlExeModuleT.

Участники

Открытые конструкторы

Имя Описание
CAtlExeModuleT::CAtlExeModuleT Конструктор.
CAtlExeModuleT::~CAtlExeModuleT Деструктор

Открытые методы

Имя Описание
CAtlExeModuleT::InitializeCom Инициализирует COM.
CAtlExeModuleT::P arseCommandLine Анализирует командную строку и выполняет регистрацию при необходимости.
CAtlExeModuleT::P ostMessageLoop Этот метод вызывается сразу после завершения цикла сообщений.
CAtlExeModuleT::P reMessageLoop Этот метод вызывается непосредственно перед вводом цикла сообщений.
CAtlExeModuleT::RegisterClassObjects Регистрирует объект класса.
CAtlExeModuleT::RevokeClassObjects Отменяет объект класса.
CAtlExeModuleT::Run Этот метод выполняет код в модуле EXE для инициализации, запуска цикла сообщений и очистки.
CAtlExeModuleT::RunMessageLoop Этот метод выполняет цикл сообщений.
CAtlExeModuleT::UninitializeCom Неинициализирует COM.
CAtlExeModuleT::Unlock Уменьшает количество блокировок модуля.
CAtlExeModuleT::WinMain Этот метод реализует код, необходимый для запуска EXE.

Открытые члены данных

Имя Описание
CAtlExeModuleT::m_bDelayShutdown Флаг, указывающий на задержку завершения работы модуля.
CAtlExeModuleT::m_dwPause Значение приостановки, используемое для обеспечения освобождения всех объектов перед завершением работы.
CAtlExeModuleT::m_dwTimeOut Значение времени ожидания, используемое для задержки выгрузки модуля.

Замечания

CAtlExeModuleT представляет модуль для приложения (EXE) и содержит код, который поддерживает создание EXE-файла, обработку командной строки, регистрацию объектов класса, выполнение цикла сообщений и очистку при выходе.

Этот класс предназначен для повышения производительности при постоянном создании и уничтожении COM-объектов на сервере EXE. После освобождения последнего com-объекта EXE ожидает длительности, указанной членом данных CAtlExeModuleT::m_dwTimeOut данных. Если в течение этого периода действия нет (т. е. не создаются com-объекты), запускается процесс завершения работы.

Элемент данных CAtlExeModuleT::m_bDelayShutdown используется для определения того, должен ли EXE использовать механизм, определенный выше. Если задано значение false, модуль завершится немедленно.

Дополнительные сведения о модулях в ATL см. в разделе "Классы модулей ATL".

Иерархия наследования

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Требования

Заголовок: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

Конструктор.

CAtlExeModuleT() throw();

Замечания

Если модуль EXE не удалось инициализировать, WinMain немедленно возвращается без дальнейшей обработки.

CAtlExeModuleT::~CAtlExeModuleT

Деструктор

~CAtlExeModuleT() throw();

Замечания

Освобождает все выделенные ресурсы.

CAtlExeModuleT::InitializeCom

Инициализирует COM.

static HRESULT InitializeCom() throw();

Возвращаемое значение

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Этот метод вызывается из конструктора и может быть переопределен для инициализации COM способом, отличным от реализации по умолчанию. Реализация по умолчанию вызывает CoInitializeEx(NULL, COINIT_MULTITHREADED) или CoInitialize(NULL) зависит от конфигурации проекта.

Для переопределения этого метода обычно требуется переопределение CAtlExeModuleT::UninitializeCom.

CAtlExeModuleT::m_bDelayShutdown

Флаг, указывающий на задержку завершения работы модуля.

bool m_bDelayShutdown;

Замечания

Дополнительные сведения см. в обзоре CAtlExeModuleT.

CAtlExeModuleT::m_dwPause

Значение приостановки, используемое для обеспечения того, чтобы все объекты исчезли перед завершением работы.

DWORD m_dwPause;

Замечания

Измените это значение после вызова CAtlExeModuleT::InitializeCom , чтобы задать количество миллисекундах, используемых в качестве значения приостановки для завершения работы сервера. Значение по умолчанию — 1000 миллисекунда.

CAtlExeModuleT::m_dwTimeOut

Значение времени ожидания, используемое для задержки выгрузки модуля.

DWORD m_dwTimeOut;

Замечания

Измените это значение после вызова CAtlExeModuleT::InitializeCom , чтобы определить количество миллисекундах, используемых в качестве значения времени ожидания для завершения работы сервера. Значение по умолчанию — 5000 миллисекунд. Дополнительные сведения см. в обзоре CAtlExeModuleT.

CAtlExeModuleT::P arseCommandLine

Анализирует командную строку и выполняет регистрацию при необходимости.

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

Параметры

lpCmdLine
Командная строка, переданная приложению.

pnRetCode
HRESULT, соответствующий регистрации (если это произошло).

Возвращаемое значение

Возвращает значение true, если приложение должно продолжать работать, в противном случае — значение false.

Замечания

Этот метод вызывается из CAtlExeModuleT::WinMain и может быть переопределен для обработки коммутаторов командной строки. Реализация по умолчанию проверка для аргументов командной строки /RegServer и /UnRegServer и выполняет регистрацию или отмену регистрации.

CAtlExeModuleT::P ostMessageLoop

Этот метод вызывается сразу после завершения цикла сообщений.

HRESULT PostMessageLoop() throw();

Возвращаемое значение

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Переопределите этот метод, чтобы выполнить очистку пользовательского приложения. Реализация по умолчанию вызывает CAtlExeModuleT::RevokeClassObjects.

CAtlExeModuleT::P reMessageLoop

Этот метод вызывается непосредственно перед вводом цикла сообщений.

HRESULT PreMessageLoop(int nShowCmd) throw();

Параметры

nShowCmd
Значение, переданное в качестве параметра nShowCmd в WinMain.

Возвращаемое значение

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Переопределите этот метод, чтобы добавить пользовательский код инициализации для приложения. Реализация по умолчанию регистрирует объекты класса.

CAtlExeModuleT::RegisterClassObjects

Регистрирует объект класса с помощью OLE, чтобы к нему могли подключаться другие приложения.

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

Параметры

dwClsContext
Указывает контекст, в котором должен выполняться объект класса. Возможные значения: CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER или CLSCTX_LOCAL_SERVER.

dwFlags
Определяет типы подключений к объекту класса. Возможные значения: REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE или REGCLS_MULTI_SEPARATE.

Возвращаемое значение

Возвращает S_OK при успешном выполнении, S_FALSE, если не было классов для регистрации или ошибки HRESULT при сбое.

CAtlExeModuleT::RevokeClassObjects

Удаляет объект класса.

HRESULT RevokeClassObjects() throw();

Возвращаемое значение

Возвращает S_OK при успешном выполнении, S_FALSE, если не было классов для регистрации или ошибки HRESULT при сбое.

CAtlExeModuleT::Run

Этот метод выполняет код в модуле EXE для инициализации, запуска цикла сообщений и очистки.

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

Параметры

nShowCmd
Указывает способ отображения окна. Этот параметр может быть одним из значений, рассмотренных в разделе WinMain . По умолчанию SW_HIDE.

Возвращаемое значение

Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.

Замечания

Этот метод можно переопределить. Однако на практике лучше переопределить CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop или CAtlExeModuleT::P ostMessageLoop.

CAtlExeModuleT::RunMessageLoop

Этот метод выполняет цикл сообщений.

void RunMessageLoop() throw();

Замечания

Этот метод можно переопределить, чтобы изменить поведение цикла сообщений.

CAtlExeModuleT::UninitializeCom

Неинициализирует COM.

static void UninitializeCom() throw();

Замечания

По умолчанию этот метод просто вызывает CoUninitialize и вызывается из деструктора. Переопределите этот метод, если переопределить CAtlExeModuleT::InitializeCom.

CAtlExeModuleT::Unlock

Уменьшает количество блокировок модуля.

LONG Unlock() throw();

Возвращаемое значение

Возвращает значение, которое может быть полезно для диагностика или тестирования.

CAtlExeModuleT::WinMain

Этот метод реализует код, необходимый для запуска EXE.

int WinMain(int nShowCmd) throw();

Параметры

nShowCmd
Указывает способ отображения окна. Этот параметр может быть одним из значений, рассмотренных в разделе WinMain .

Возвращаемое значение

Возвращает возвращаемое значение исполняемого файла.

Замечания

Этот метод можно переопределить. Если переопределение CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop или CAtlExeModuleT::RunMessageLoop не обеспечивает достаточной гибкости, можно переопределить WinMain функцию с помощью этого метода.

См. также

Пример ATLDuck
Класс CAtlModuleT
Класс CAtlDllModuleT
Общие сведения о классе