Compartilhar via


Classe CComModule

A partir da ATL 7.0, CComModule é preterido: consulte Classes de módulo ATL para obter mais detalhes.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class CComModule : public _ATL_MODULE

Membros

Métodos públicos

Nome Descrição
CComModule::GetClassObject Cria um objeto do CLSID especificado. Somente para DLLs.
CComModule::GetModuleInstance Retorna m_hInst.
CComModule::GetResourceInstance Retorna m_hInstResource.
CComModule::GetTypeLibInstance Retorna m_hInstTypeLib.
CComModule::Init Inicializa membros de dados.
CComModule::RegisterClassHelper Insere o registro de classe padrão de um objeto no registro do sistema.
CComModule::RegisterClassObjects Registra o objeto de classe. Somente para EXEs.
CComModule::RegisterServer Atualiza o registro do sistema para cada objeto no mapa do objeto.
CComModule::RegisterTypeLib Registra uma biblioteca de tipos.
CComModule::RevokeClassObjects Revoga o objeto de classe. Somente para EXEs.
CComModule::Term Libera membros de dados.
CComModule::UnregisterClassHelper Remove o registro de classe padrão de um objeto do registro do sistema.
CComModule::UnregisterServer Cancela o registro de cada objeto no mapa de objetos.
CComModule::UpdateRegistryClass Registra ou cancela o registro de classe padrão de um objeto.
CComModule::UpdateRegistryFromResourceD Executa o script contido em um recurso especificado para registrar ou cancelar o registro de um objeto.
CComModule::UpdateRegistryFromResourceS Vincula estaticamente ao Componente do Registro da ATL. Executa o script contido em um recurso especificado para registrar ou cancelar o registro de um objeto.

Membros de Dados Públicos

Nome Descrição
CComModule::m_csObjMap Garante o acesso sincronizado às informações do mapa do objeto.
CComModule::m_csTypeInfoHolder Garante o acesso sincronizado às informações da biblioteca de tipos.
CComModule::m_csWindowCreate Garante o acesso sincronizado às informações de classe de janela e a dados estáticos usados durante a criação da janela.
CComModule::m_hInst Contém o identificador para a instância do módulo.
CComModule::m_hInstResource Por padrão, contém o identificador para a instância do módulo.
CComModule::m_hInstTypeLib Por padrão, contém o identificador para a instância do módulo.
CComModule::m_pObjMap Aponta para o mapa de objeto mantido pela instância do módulo.

Comentários

Observação

Essa classe foi preterida e os assistentes de geração de código da ATL agora usam as classes derivadas CAtlAutoThreadModule e CAtlModule. Consulte Classes de módulo da ATL para obter mais informações. As informações a seguir são usadas com aplicativos criados com versões mais antigas da ATL. CComModule ainda faz parte da ATL para funcionalidade de versões anteriores.

CComModule implementa um módulo de servidor COM, permitindo que um cliente acesse os componentes do módulo. CComModule dá suporte a módulos DLL (em processo) e EXE (local).

Uma instância CComModule usa um mapa de objeto para manter um conjunto de definições de objeto de classe. Este mapa de objetos é implementado como uma matriz de estruturas _ATL_OBJMAP_ENTRY e contém informações para:

  • Inserir e remover descrições de objeto no registro do sistema.

  • Instanciar objetos por meio de uma fábrica de classes.

  • Estabelecer a comunicação entre um cliente e o objeto raiz no componente.

  • Executar o gerenciamento de tempo de vida de objetos de classe.

Quando você executa o COM AppWizard da ATL, o assistente gera automaticamente _Module, uma instância global de CComModule ou uma classe derivada dela. Para obter mais informações sobre o Assistente de Projeto da ATL, confira o artigo Criar um projeto da ATL.

Além de CComModule, a ATL fornece CComAutoThreadModule, que implementa um módulo de modelo de acomodação para EXEs e serviços Windows. Derive seu módulo de CComAutoThreadModule para criar objetos em várias acomodações.

Hierarquia de herança

_ATL_MODULE

CAtlModule

CAtlModuleT

CComModule

Requisitos

Cabeçalho: atlbase.h

CComModule::GetClassObject

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

rclsid
[entrada] O CLSID do objeto a ser criado.

riid
[in] O IID da interface solicitada .

ppv
[saída] Um ponteiro para o ponteiro da interface identificado por riid. Se o objeto não der suporte a essa interface, o ppv será definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Cria um objeto do CLSID especificado e recupera um ponteiro de interface para esse objeto.

GetClassObject só está disponível para DLLs.

CComModule::GetModuleInstance

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HINSTANCE GetModuleInstance() throw();

Valor de retorno

O HINSTANCE que identifica este módulo.

Comentários

Retorna o membro de dados m_hInst.

CComModule::GetResourceInstance

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HINSTANCE GetResourceInstance() throw();

Valor de retorno

Um HINSTANCE.

Comentários

Retorna o membro de dados m_hInstResource.

CComModule::GetTypeLibInstance

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HINSTANCE GetTypeLibInstance() const throw();

Valor de retorno

Um HINSTANCE.

Comentários

Retorna o membro de dados m_hInstTypeLib.

CComModule::Init

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

p
[entrada] Um ponteiro para uma matriz de entradas de mapa de objeto.

h
[entrada] O HINSTANCE passado para DLLMain ou WinMain.

plibid
[entrada] Um ponteiro para o LIBID da biblioteca de tipos associada ao projeto.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Inicializa todos os membros de dados.

CComModule::m_csObjMap

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

CRITICAL_SECTION m_csObjMap;

Comentários

Garante o acesso sincronizado ao mapa do objeto.

CComModule::m_csTypeInfoHolder

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

CRITICAL_SECTION m_csTypeInfoHolder;

Comentários

Garante o acesso sincronizado à biblioteca de tipos.

CComModule::m_csWindowCreate

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

CRITICAL_SECTION m_csWindowCreate;

Comentários

Garante o acesso sincronizado às informações de classe de janela e a dados estáticos usados durante a criação da janela.

CComModule::m_hInst

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HINSTANCE m_hInst;

Comentários

Contém o identificador para a instância do módulo.

O método Init define m_hInst para o identificador passado para DLLMain ou WinMain.

CComModule::m_hInstResource

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HINSTANCE m_hInstResource;

Comentários

Por padrão, contém o identificador para a instância do módulo.

O método Init define m_hInstResource para o identificador passado para DLLMain ou WinMain. Você pode definir m_hInstResource explicitamente para o identificador para um recurso.

O método GetResourceInstance retorna o identificador armazenado em m_hInstResource.

CComModule::m_hInstTypeLib

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HINSTANCE m_hInstTypeLib;

Comentários

Por padrão, contém o identificador para a instância do módulo.

O método Init define m_hInstTypeLib para o identificador passado para DLLMain ou WinMain. Você pode definir explicitamente m_hInstTypeLib para o identificador para uma biblioteca de tipos.

O método GetTypeLibInstance retorna o identificador armazenado em m_hInstTypeLib.

CComModule::m_pObjMap

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

_ATL_OBJMAP_ENTRY* m_pObjMap;

Comentários

Aponta para o mapa de objeto mantido pela instância do módulo.

CComModule::RegisterClassHelper

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

clsid
[entrada] O CLSID do objeto a ser registrado.

lpszProgID
[entrada] O ProgID associado ao objeto.

lpszVerIndProgID
[entrada] O ProgID independente de versão associado ao objeto.

nDescID
[entrada] O identificador de um recurso de cadeia de caracteres para a descrição do objeto.

dwFlags
[entrada] Especifica o modelo de threading a ser inserido no registro. Os valores possíveis são THREADFLAGS_APARTMENT, THREADFLAGS_BOTH ou AUTPRXFLAG.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Insere o registro de classe padrão de um objeto no registro do sistema.

O método UpdateRegistryClass chama RegisterClassHelper.

CComModule::RegisterClassObjects

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

dwClsContext
[entrada] Especifica o contexto no qual o objeto de classe deve ser executado. Os valores possíveis são CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER ou CLSCTX_LOCAL_SERVER. Para obter uma descrição desses valores, consulte CLSCTX no SDK do Windows.

dwFlags
[entrada] Determina os tipos de conexão com o objeto de classe. Os valores possíveis são REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE ou REGCLS_MULTI_SEPARATE. Para obter uma descrição desses valores, consulte REGCLS no SDK do Windows.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Registra um objeto de classe EXE com OLE para que outros aplicativos possam se conectar a ele. Esse método só está disponível para EXEs.

CComModule::RegisterServer

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

bRegTypeLib
[entrada] Indica se a biblioteca de tipos será registrada. O valor padrão é FALSE.

pCLSID
[entrada] Aponta para o CLSID do objeto a ser registrado. Se NULL (o valor padrão), todos os objetos no mapa de objetos serão registrados.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Dependendo do parâmetro pCLSID, atualiza o registro do sistema para um único objeto de classe ou para todos os objetos no mapa do objeto.

Se bRegTypeLib for TRUE, as informações da biblioteca de tipos também serão atualizadas.

Consulte OBJECT_ENTRY_AUTO para obter informações sobre como adicionar uma entrada ao mapa de objetos.

RegisterServer será chamado automaticamente por DLLRegisterServer para uma DLL ou por WinMain para uma execução EXE com a opção de linha de comando /RegServer.

CComModule::RegisterTypeLib

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

lpszIndex
[entrada] Cadeia de caracteres no formato "\\N", onde N é o índice inteiro do recurso TYPELIB.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Adiciona informações sobre uma biblioteca de tipos ao registro do sistema.

Se a instância do módulo contiver várias bibliotecas de tipos, use a segunda versão desse método para especificar qual biblioteca de tipos deve ser usada.

CComModule::RevokeClassObjects

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

HRESULT RevokeClassObjects() throw();

Valor de retorno

Um valor HRESULT padrão.

Comentários

Remove o objeto de classe. Esse método só está disponível para EXEs.

CComModule::Term

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

void Term() throw();

Comentários

Libera todos os membros de dados.

CComModule::UnregisterClassHelper

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

clsid
[entrada] O CLSID do objeto a ser cancelado.

lpszProgID
[entrada] O ProgID associado ao objeto.

lpszVerIndProgID
[entrada] O ProgID independente de versão associado ao objeto.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Remove o registro de classe padrão de um objeto do registro do sistema.

O método UpdateRegistryClass chama UnregisterClassHelper.

CComModule::UnregisterServer

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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

Parâmetros

bUnRegTypeLib
Se TRUE, a biblioteca de tipos também não será registrada.

pCLSID
Aponta para o CLSID do objeto a ser cancelado. Se NULL (o valor padrão), todos os objetos no mapa de objetos terão o registro cancelado.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Dependendo do parâmetro pCLSID, cancela o registro de um único objeto de classe ou de todos os objetos no mapa do objeto.

UnregisterServer será chamado automaticamente por DLLUnregisterServer para uma DLL ou por WinMain para uma execução EXE com a opção de linha de comando /UnregServer.

Consulte OBJECT_ENTRY_AUTO para obter informações sobre como adicionar uma entrada ao mapa de objetos.

CComModule::UpdateRegistryClass

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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);

Parâmetros

clsid
O CLSID do objeto a ser registrado ou a ter o registro cancelado.

lpszProgID
O ProgID associado ao objeto.

lpszVerIndProgID
O ProgID independente de versão associado ao objeto.

nDescID
O identificador de um recurso de cadeia de caracteres para a descrição do objeto.

szDesc
Uma cadeia de caracteres que contém a descrição do objeto.

dwFlags
Especifica o modelo de threading a ser inserido no registro. Os valores possíveis são THREADFLAGS_APARTMENT, THREADFLAGS_BOTH ou AUTPRXFLAG.

bRegister
Indica se o objeto deve ser registrado.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Se bRegister for TRUE, esse método inserirá o registro de classe padrão do objeto no registro do sistema.

Se bRegister for FALSE, ele removerá o registro do objeto.

Dependendo do valor de bRegister, UpdateRegistryClass chama RegisterClassHelper ou UnregisterClassHelper.

Ao especificar a macro DECLARE_REGISTRY, UpdateRegistryClass será invocado automaticamente quando o mapa de objetos for processado.

CComModule::UpdateRegistryFromResourceD

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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 ();

Parâmetros

lpszRes
[entrada] Um nome do recurso.

nResID
[entrada] Uma ID do recurso.

bRegister
[entrada] Indica se o objeto deve ser registrado.

pMapEntries
[entrada] Um ponteiro para o mapa de substituição que armazena valores associados aos parâmetros substituíveis do script. A ATL usa automaticamente %MODULE%. Para usar parâmetros substituíveis adicionais, consulte os Comentários para obter detalhes. Caso contrário, use o valor padrão NULL.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Executa o script contido no recurso especificado por lpszRes ou nResID.

Se bRegister for TRUE, esse método registrará o objeto no registro do sistema; caso contrário, ele removerá o objeto.

Ao especificar a macro DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID, UpdateRegistryFromResourceD será invocado automaticamente quando o mapa do objeto for processado.

Observação

Para substituir valores de substituição em tempo de execução, não especifique a macro DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID. Em vez disso, crie uma matriz de estruturas _ATL_REGMAP_ENTRIES, em que cada entrada contém um espaço reservado de variável emparelhado com um valor para substituir o espaço reservado no tempo de execução. Em seguida chame UpdateRegistryFromResourceD, passando a matriz para o parâmetro pMapEntries. Isso adiciona todos os valores de substituição nas estruturas _ATL_REGMAP_ENTRIES para o mapa de substituição do Registrador.

Observação

Para ser vinculado estaticamente ao Componente do Registro da ATL (Registrador), confira UpdateRegistryFromResourceS.

Para obter mais informações sobre scripts e parâmetros substituíveis, consulte o artigo Componente do Registro da ATL (Registrador).

CComModule::UpdateRegistryFromResourceS

A partir da ATL 7.0, CComModule está obsoleto: confira Classes de módulos da ATL para obter mais detalhes.

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();

Parâmetros

lpszRes
[entrada] Um nome do recurso.

nResID
[entrada] Uma ID do recurso.

bRegister
[entrada] Indica se o script do recurso deve ser registrado.

pMapEntries
[entrada] Um ponteiro para o mapa de substituição que armazena valores associados aos parâmetros substituíveis do script. A ATL usa automaticamente %MODULE%. Para usar parâmetros substituíveis adicionais, consulte os Comentários para obter detalhes. Caso contrário, use o valor padrão NULL.

Valor de retorno

Um valor HRESULT padrão.

Comentários

Semelhante a UpdateRegistryFromResourceD, exceto que UpdateRegistryFromResourceS cria um link estático para o Componente do Registro da ATL (Registrador).

UpdateRegistryFromResourceS será invocado automaticamente quando o mapa de objeto for processado, desde que você adicione #define _ATL_STATIC_REGISTRY ao pch.h (stdafx.h no Visual Studio 2017 e anteriores).

Observação

Para substituir valores de substituição em tempo de execução, não especifique a macro DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID. Em vez disso, crie uma matriz de estruturas _ATL_REGMAP_ENTRIES, em que cada entrada contém um espaço reservado de variável emparelhado com um valor para substituir o espaço reservado no tempo de execução. Em seguida chame UpdateRegistryFromResourceS, passando a matriz para o parâmetro pMapEntries. Isso adiciona todos os valores de substituição nas estruturas _ATL_REGMAP_ENTRIES para o mapa de substituição do Registrador.

Para obter mais informações sobre scripts e parâmetros substituíveis, consulte o artigo Componente do Registro da ATL (Registrador).

Confira também

Visão geral da aula