Поделиться через


Класс CComModule

По состоянию на ATL 7.0 CComModule не рекомендуется: дополнительные сведения см. в разделе "Классы модулей ATL".

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CComModule : public _ATL_MODULE

Участники

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

Имя Описание
CComModule::GetClassObject Создает объект указанного CLSID. Только для библиотек DLL.
CComModule::GetModuleInstance Возвращает m_hInst.
CComModule::GetResourceInstance Возвращает m_hInstResource.
CComModule::GetTypeLibInstance Возвращает m_hInstTypeLib.
CComModule::Init Инициализирует элементы данных.
CComModule::RegisterClassHelper Вводит регистрацию стандартного класса объекта в системном реестре.
CComModule::RegisterClassObjects Регистрирует объект класса. Только для EXEs.
CComModule::RegisterServer Обновления системный реестр для каждого объекта на карте объектов.
CComModule::RegisterTypeLib Регистрирует библиотеку типов.
CComModule::RevokeClassObjects Отменяет объект класса. Только для EXEs.
CComModule::Term Освобождает члены данных.
CComModule::UnregisterClassHelper Удаляет регистрацию стандартного класса объекта из системного реестра.
CComModule::UnregisterServer Отменяет регистрацию каждого объекта на карте объектов.
CComModule::UpdateRegistryClass Регистрирует или отменяет регистрацию стандартного класса объекта.
CComModule::UpdateRegistryFromResourceD Запускает скрипт, содержащийся в указанном ресурсе, для регистрации или отмены регистрации объекта.
CComModule::UpdateRegistryFromResourceS Статические ссылки на компонент реестра ATL. Запускает скрипт, содержащийся в указанном ресурсе, для регистрации или отмены регистрации объекта.

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

Имя Описание
CComModule::m_csObjMap Обеспечивает синхронизированный доступ к данным карты объектов.
CComModule::m_csTypeInfoHolder Обеспечивает синхронизированный доступ к сведениям библиотеки типов.
CComModule::m_csWindowCreate Обеспечивает синхронизированный доступ к сведениям о классе окна и статическим данным, используемым во время создания окна.
CComModule::m_hInst Содержит дескриптор экземпляра модуля.
CComModule::m_hInstResource По умолчанию содержит дескриптор экземпляра модуля.
CComModule::m_hInstTypeLib По умолчанию содержит дескриптор экземпляра модуля.
CComModule::m_pObjMap Указывает на карту объектов, поддерживаемую экземпляром модуля.

Замечания

Примечание.

Этот класс устарел, а мастера создания кода ATL теперь используют производные классы CAtlAutoThreadModule и CAtlModule. Дополнительные сведения см. в классах модулей ATL. Приведенные ниже сведения используются для приложений, созданных с более старыми выпусками ATL. CComModule по-прежнему является частью ATL для обратной возможности.

CComModule реализует com-серверный модуль, позволяющий клиенту получать доступ к компонентам модуля. CComModule поддерживает модули DLL (in-process) и EXE (local).

Экземпляр CComModule использует сопоставление объектов для поддержания набора определений объектов класса. Эта карта объектов реализуется в виде массива _ATL_OBJMAP_ENTRY структур и содержит сведения для:

  • Ввод и удаление описаний объектов в системном реестре.

  • Создание экземпляров объектов с помощью фабрики классов.

  • Установка связи между клиентом и корневым объектом компонента.

  • Выполнение управления временем существования объектов класса.

При запуске COM-приложения ATL мастер автоматически создает _Moduleглобальный экземпляр или класс, производный CComModule от него. Дополнительные сведения о мастере проектов ATL см. в статье "Создание проекта ATL".

Кроме того CComModule, ATL предоставляет CComAutoThreadModule, который реализует модуль модели квартиры для exEs и служб Windows. Наследуйте модуль, когда CComAutoThreadModule требуется создать объекты в нескольких квартирах.

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

_ATL_MODULE

CAtlModule

CAtlModuleT

CComModule

Требования

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

CComModule::GetClassObject

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HRESULT GetClassObject(
    REFCLSID rclsid,
    REFIID riid,
    LPVOID* ppv) throw();

Параметры

rclsid
[in] CLSID создаваемого объекта.

riid
[in] IID запрошенного интерфейса.

Ppv
[out] Указатель на указатель интерфейса, определяемый идентификатором riid. Если объект не поддерживает этот интерфейс, ppv имеет значение NULL.

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

Стандартное значение HRESULT.

Замечания

Создает объект указанного CLSID и извлекает указатель интерфейса на этот объект.

GetClassObject доступен только для библиотек DLL.

CComModule::GetModuleInstance

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HINSTANCE GetModuleInstance() throw();

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

HINSTANCE, определяющий этот модуль.

Замечания

Возвращает элемент данных m_hInst.

CComModule::GetResourceInstance

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HINSTANCE GetResourceInstance() throw();

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

An HINSTANCE.

Замечания

Возвращает элемент данных m_hInstResource.

CComModule::GetTypeLibInstance

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HINSTANCE GetTypeLibInstance() const throw();

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

An HINSTANCE.

Замечания

Возвращает элемент данных m_hInstTypeLib.

CComModule::Init

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HRESULT Init(
    _ATL_OBJMAP_ENTRY* p,
    HINSTANCE h,
    const GUID* plibid = NULL) throw();

Параметры

p
[in] Указатель на массив записей карты объектов.

ч
[in] HINSTANCE, переданный DLLMain или WinMain.

plibid
[in] Указатель на LIBID библиотеки типов, связанной с проектом.

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

Стандартное значение HRESULT.

Замечания

Инициализирует все элементы данных.

CComModule::m_csObjMap

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

CRITICAL_SECTION m_csObjMap;

Замечания

Обеспечивает синхронизированный доступ к карте объектов.

CComModule::m_csTypeInfoHolder

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

CRITICAL_SECTION m_csTypeInfoHolder;

Замечания

Обеспечивает синхронизированный доступ к библиотеке типов.

CComModule::m_csWindowCreate

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

CRITICAL_SECTION m_csWindowCreate;

Замечания

Обеспечивает синхронизированный доступ к сведениям о классе окна и статическим данным, используемым во время создания окна.

CComModule::m_hInst

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HINSTANCE m_hInst;

Замечания

Содержит дескриптор экземпляра модуля.

Метод Init задает m_hInst дескриптор, переданный DLLMain в или WinMain.

CComModule::m_hInstResource

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HINSTANCE m_hInstResource;

Замечания

По умолчанию содержит дескриптор экземпляра модуля.

Метод Init задает m_hInstResource дескриптор, переданный DLLMain в или WinMain. Вы можете явно задать m_hInstResource дескриптор ресурсу.

Метод GetResourceInstance возвращает дескриптор , хранящийся в m_hInstResource.

CComModule::m_hInstTypeLib

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HINSTANCE m_hInstTypeLib;

Замечания

По умолчанию содержит дескриптор экземпляра модуля.

Метод Init задает m_hInstTypeLib дескриптор, переданный DLLMain в или WinMain. Вы можете явно задать m_hInstTypeLib дескриптор библиотеке типов.

Метод GetTypeLibInstance возвращает дескриптор , хранящийся в m_hInstTypeLib.

CComModule::m_pObjMap

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

_ATL_OBJMAP_ENTRY* m_pObjMap;

Замечания

Указывает на карту объектов, поддерживаемую экземпляром модуля.

CComModule::RegisterClassHelper

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

ATL_DEPRECATED HRESULT RegisterClassHelper(
    const CLSID& clsid,
    LPCTSTR lpszProgID,
    LPCTSTR lpszVerIndProgID,
    UINT nDescID,
    DWORD dwFlags);

Параметры

Clsid
[in] CLSID объекта, который необходимо зарегистрировать.

lpszProgID
[in] Идентификатор ProgID, связанный с объектом.

lpszVerIndProgID
[in] Идентификатор ProgID, связанный с объектом, независимо от версии.

nDescID
[in] Идентификатор строкового ресурса для описания объекта.

dwFlags
[in] Указывает модель потоков для ввода в реестр. Возможные значения: THREADFLAGS_APARTMENT, THREADFLAGS_BOTH или AUTPRXFLAG.

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

Стандартное значение HRESULT.

Замечания

Вводит регистрацию стандартного класса объекта в системном реестре.

Вызовы RegisterClassHelperметода UpdateRegistryClass.

CComModule::RegisterClassObjects

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

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

Параметры

dwClsContext
[in] Указывает контекст, в котором должен выполняться объект класса. Возможные значения: CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER или CLSCTX_LOCAL_SERVER. Описание этих значений см. в разделе CLSCTX в пакете SDK для Windows.

dwFlags
[in] Определяет типы подключений к объекту класса. Возможные значения: REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE или REGCLS_MULTI_SEPARATE. Описание этих значений см. в разделе REGCLS в пакете SDK для Windows.

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

Стандартное значение HRESULT.

Замечания

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

CComModule::RegisterServer

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HRESULT RegisterServer(
    BOOL bRegTypeLib = FALSE,
    const CLSID* pCLSID = NULL) throw();

Параметры

bRegTypeLib
[in] Указывает, будет ли зарегистрирована библиотека типов. Значение по умолчанию — FALSE.

pCLSID
[in] Указывает на CLSID объекта, который необходимо зарегистрировать. Если значение NULL (значение по умолчанию), все объекты на карте объектов будут зарегистрированы.

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

Стандартное значение HRESULT.

Замечания

В зависимости от параметра pCLSID обновляет системный реестр для одного объекта класса или для всех объектов на карте объектов.

Если bRegTypeLib имеет значение TRUE, сведения о библиотеке типов также будут обновлены.

Сведения о добавлении записи на карту объектов см . в OBJECT_ENTRY_AUTO .

RegisterServer автоматически вызывается DLLRegisterServer для библиотеки DLL или WinMain для выполнения EXE с параметром командной /RegServer строки.

CComModule::RegisterTypeLib

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HRESULT RegisterTypeLib() throw();
HRESULT RegisterTypeLib(LPCTSTR lpszIndex) throw();

Параметры

lpszIndex
[in] Строка в формате "\\N", где N является целым индексом ресурса TYPELIB.

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

Стандартное значение HRESULT.

Замечания

Добавляет сведения о библиотеке типов в системный реестр.

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

CComModule::RevokeClassObjects

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HRESULT RevokeClassObjects() throw();

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

Стандартное значение HRESULT.

Замечания

Удаляет объект класса. Этот метод доступен только для EXEs.

CComModule::Term

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

void Term() throw();

Замечания

Освобождает все элементы данных.

CComModule::UnregisterClassHelper

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

ATL_DEPRECATED HRESULT UnregisterClassHelper(
    const CLSID& clsid,
    LPCTSTR lpszProgID,
    LPCTSTR lpszVerIndProgID);

Параметры

Clsid
[in] CLSID объекта, который требуется отменить регистрацию.

lpszProgID
[in] Идентификатор ProgID, связанный с объектом.

lpszVerIndProgID
[in] Идентификатор ProgID, связанный с объектом, независимо от версии.

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

Стандартное значение HRESULT.

Замечания

Удаляет регистрацию стандартного класса объекта из системного реестра.

Вызовы UnregisterClassHelperметода UpdateRegistryClass.

CComModule::UnregisterServer

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

HRESULT UnregisterServer(const CLSID* pCLSID = NULL) throw ();
inline HRESULT UnregisterServer(BOOL bUnRegTypeLib, const CLSID* pCLSID = NULL) throw ();

Параметры

bUnRegTypeLib
Если значение TRUE, библиотека типов также отменяется.

pCLSID
Указывает на CLSID объекта, который требуется отменить регистрацию. Если значение NULL (значение по умолчанию), все объекты на карте объектов будут отменены.

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

Стандартное значение HRESULT.

Замечания

В зависимости от параметра pCLSID отменяет регистрацию одного объекта класса или всех объектов на карте объектов.

UnregisterServer автоматически вызывается DLLUnregisterServer для библиотеки DLL или WinMain для выполнения EXE с параметром командной /UnregServer строки.

Сведения о добавлении записи на карту объектов см . в OBJECT_ENTRY_AUTO .

CComModule::UpdateRegistryClass

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

ATL_DEPRECATED HRESULT UpdateRegistryClass(
    const CLSID& clsid,
    LPCTSTR lpszProgID,
    LPCTSTR lpszVerIndProgID,
    UINT nDescID,
    DWORD dwFlags,
    BOOL bRegister);

ATL_DEPRECATED HRESULT UpdateRegistryClass(
    const CLSID& clsid,
    LPCTSTR lpszProgID,
    LPCTSTR lpszVerIndProgID,
    LPCTSTR szDesc,
    DWORD dwFlags,
    BOOL bRegister);

Параметры

Clsid
CLSID объекта, который необходимо зарегистрировать или отменить регистрацию.

lpszProgID
Идентификатор ProgID, связанный с объектом.

lpszVerIndProgID
Идентификатор ProgID, связанный с объектом, независимо от версии.

nDescID
Идентификатор строкового ресурса для описания объекта.

szDesc
Строка, содержащая описание объекта.

dwFlags
Указывает модель потоков для ввода в реестр. Возможные значения: THREADFLAGS_APARTMENT, THREADFLAGS_BOTH или AUTPRXFLAG.

bRegister
Указывает, следует ли регистрировать объект.

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

Стандартное значение HRESULT.

Замечания

Если bRegister имеет значение TRUE, этот метод вводит стандартную регистрацию класса объекта в системном реестре.

Если bRegister имеет значение FALSE, он удаляет регистрацию объекта.

В зависимости от значения bRegister вызывается RegisterClassHelper или UnregisterClassHelperUpdateRegistryClass.

Задав макрос DECLARE_REGISTRY , UpdateRegistryClass будет вызываться автоматически при обработке карты объектов.

CComModule::UpdateRegistryFromResourceD

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

virtual HRESULT UpdateRegistryFromResourceD(
    LPCTSTR lpszRes,
    BOOL bRegister,
    struct _ATL_REGMAP_ENTRY* pMapEntries = NULL) throw();

virtual HRESULT UpdateRegistryFromResourceD(
    UINT nResID,
    BOOL bRegister,
    struct _ATL_REGMAP_ENTRY* pMapEntries = NULL) throw ();

Параметры

lpszRes
[in] Имя ресурса.

nResID
[in] Идентификатор ресурса.

bRegister
[in] Указывает, следует ли регистрировать объект.

pMapEntries
[in] Указатель на карту замены, в которую хранятся значения, связанные с заменяемыми параметрами скрипта. ATL автоматически использует %MODULE%. Дополнительные сведения см. в разделе "Примечания". В противном случае используйте значение NULL по умолчанию.

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

Стандартное значение HRESULT.

Замечания

Запускает скрипт, содержащийся в ресурсе, указанном lpszRes или nResID.

Если bRegister имеет значение TRUE, этот метод регистрирует объект в системном реестре; в противном случае он отменяет регистрацию объекта.

При обработке карты объектов автоматически вызывается макрос UpdateRegistryFromResourceD DECLARE_REGISTRY_RESOURCE или DECLARE_REGISTRY_RESOURCEID.

Примечание.

Чтобы заменить значения замены во время выполнения, не указывайте макрос DECLARE_REGISTRY_RESOURCE или DECLARE_REGISTRY_RESOURCEID. Вместо этого создайте массив структур, где каждая запись содержит заполнитель переменной _ATL_REGMAP_ENTRIES , в паре со значением для замены заполнителя во время выполнения. Затем вызовите UpdateRegistryFromResourceDмассив для параметра pMapEntries . При этом все значения замены в структурах добавляются на _ATL_REGMAP_ENTRIES карту замены регистратора.

Примечание.

Сведения о статической ссылке на компонент реестра ATL (регистратор) см. в разделе UpdateRegistryFromResourceS.

Дополнительные сведения о заменяемых параметрах и скриптах см. в статье Компонент реестра ATL (регистратор).

CComModule::UpdateRegistryFromResourceS

По состоянию на ATL 7.0 устарело: CComModule дополнительные сведения см. в разделе "Классы модулей ATL".

virtual HRESULT UpdateRegistryFromResourceS(
    LPCTSTR lpszRes,
    BOOL bRegister,
    struct _ATL_REGMAP_ENTRY* pMapEntries = NULL) throw();

virtual HRESULT UpdateRegistryFromResourceS(
    UINT nResID,
    BOOL bRegister,
    struct _ATL_REGMAP_ENTRY* pMapEntries = NULL) throw();

Параметры

lpszRes
[in] Имя ресурса.

nResID
[in] Идентификатор ресурса.

bRegister
[in] Указывает, следует ли зарегистрировать скрипт ресурса.

pMapEntries
[in] Указатель на карту замены, в которую хранятся значения, связанные с заменяемыми параметрами скрипта. ATL автоматически использует %MODULE%. Дополнительные сведения см. в разделе "Примечания". В противном случае используйте значение NULL по умолчанию.

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

Стандартное значение HRESULT.

Замечания

Аналогично UpdateRegistryFromResourceD, кроме UpdateRegistryFromResourceS создания статической ссылки на компонент реестра ATL (регистратор).

UpdateRegistryFromResourceS будет вызываться автоматически при обработке карты объектов, при условии, что вы добавляете #define _ATL_STATIC_REGISTRY в pch.h (stdafx.h в Visual Studio 2017 и более ранних версий).

Примечание.

Чтобы заменить значения замены во время выполнения, не указывайте макрос DECLARE_REGISTRY_RESOURCE или DECLARE_REGISTRY_RESOURCEID . Вместо этого создайте массив структур, где каждая запись содержит заполнитель переменной _ATL_REGMAP_ENTRIES , в паре со значением для замены заполнителя во время выполнения. Затем вызовите UpdateRegistryFromResourceSмассив для параметра pMapEntries . При этом все значения замены в структурах добавляются на _ATL_REGMAP_ENTRIES карту замены регистратора.

Дополнительные сведения о заменяемых параметрах и скриптах см. в статье Компонент реестра ATL (регистратор).

См. также

Общие сведения о классе