Класс 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
требуется создать объекты в нескольких квартирах.
Иерархия наследования
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 (регистратор).