Partilhar via


Classe CComModule

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

A partir do ATL 7.0, CComModule está obsoleto: veja ATL Module Classes para mais detalhes.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

class CComModule : public _ATL_MODULE

Membros

Métodos Públicos

Nome Description
CComModule::GetClassObject Cria um objeto de um CLSID especificado. Apenas 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 registo de classe padrão de um objeto no registo do sistema.
CComModule::RegisterClassObjects Regista o objeto de classe. Apenas para EXEs.
CComModule::RegisterServer Atualiza o registo do sistema para cada objeto no mapa do objeto.
CComModule::RegisterTypeLib Registra uma biblioteca de tipos.
CComModule::RevokeClassObjects Revoga o objeto de classe. Apenas para EXEs.
CComModule::Term Liberta os membros dos dados.
CComModule::UnregisterClassHelper Remove o registo de classe padrão de um objeto do registo do sistema.
CComModule::UnregisterServer Desregista cada objeto no mapa de objetos.
CComModule::UpdateRegistryClass Regista ou desregista o registo de classe padrão de um objeto.
CComModule::UpdateRegistryFromResourceD Executa o script contido num recurso especificado para registar ou desregistar um objeto.
CComModule::UpdateRegistryFromResourceS Liga-se estaticamente ao Componente do Registo ATL. Executa o script contido num recurso especificado para registar ou desregistar um objeto.

Membros de Dados Públicos

Nome Description
CComModule::m_csObjMap Assegura o acesso sincronizado à informação do mapa do objeto.
CComModule::m_csTypeInfoHolder Assegura acesso sincronizado à informação da biblioteca de tipos.
CComModule::m_csWindowCreate Assegura acesso sincronizado à informação da classe de janela e aos dados estáticos usados durante a criação da janela.
CComModule::m_hInst Contém o handle da instância do módulo.
CComModule::m_hInstResource Por defeito, contém o handle da instância do módulo.
CComModule::m_hInstTypeLib Por defeito, contém o handle da instância do módulo.
CComModule::m_pObjMap Aponta para o mapa de objetos mantido pela instância do módulo.

Observações

Observação

Esta classe está obsoleta, e os assistentes de geração de código ATL usam agora as classes derivadas do CAtlAutoThreadModule e do CAtlModule . Consulte as Aulas de Módulo ATL para mais informações. A informação que se segue destina-se a aplicações criadas com versões mais antigas do ATL. CComModule ainda faz parte da ATL pela capacidade de retroceder.

CComModule implementa um módulo servidor COM, permitindo ao cliente aceder aos componentes do módulo. CComModule suporta tanto módulos DLL (em processo) como EXE (locais).

Uma CComModule instância utiliza um mapa de objetos para manter um conjunto de definições de objetos de classe. Este mapa de objetos é implementado como um array de _ATL_OBJMAP_ENTRY estruturas, e contém informação para:

  • Introdução e remoção de descrições de objetos no registo do sistema.

  • Instanciar objetos através de uma fábrica de classes.

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

  • Realização de gestão ao longo da vida dos objetos de classe.

Quando executa o ATL COM AppWizard, o assistente gera _Moduleautomaticamente , uma instância global de CComModule ou uma classe derivada dele. Para mais informações sobre o Assistente do Projeto ATL, consulte o artigo Criar um Projeto ATL.

Além de CComModule, o ATL fornece o CComAutoThreadModule, que implementa um módulo modelo apartamento para EXEs e serviços Windows. Deriva o teu módulo a partir CComAutoThreadModule do momento em que queres criar objetos em vários apartamentos.

Hierarquia de herança

_ATL_MODULE

CAtlModule

CAtlModuleT

CComModule

Requerimentos

Cabeçalho: atlbase.h

CComModule::GetClassObject

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

RCLSID
[dentro] O CLSID do objeto a ser criado.

riid
[dentro] O IID da interface solicitada.

PPV
[fora] Um ponteiro para o ponteiro de interface identificado por riid. Se o objeto não suportar esta interface, o ppv é definido como NULL.

Valor de retorno

Um valor HRESULT padrão.

Observações

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

GetClassObject está disponível apenas para DLLs.

CComModule::GetModuleInstance

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HINSTANCE GetModuleInstance() throw();

Valor de retorno

O HINSTANCE identifica este módulo.

Observações

Devolve o m_hInst membro de dados.

CComModule::GetResourceInstance

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HINSTANCE GetResourceInstance() throw();

Valor de retorno

UM INSTANTE.

Observações

Devolve o m_hInstResource membro de dados.

CComModule::GetTypeLibInstance

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HINSTANCE GetTypeLibInstance() const throw();

Valor de retorno

UM INSTANTE.

Observações

Devolve o m_hInstTypeLib membro de dados.

CComModule::Init

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

p
[dentro] Um ponteiro para um array de entradas de mapa de objetos.

h
[dentro] A HINSTÂNCIA passou para DLLMain ou WinMain.

plibid
[dentro] Um apontador para o LIBID da biblioteca de tipos associada ao projeto.

Valor de retorno

Um valor HRESULT padrão.

Observações

Inicializa todos os membros dos dados.

CComModule::m_csObjMap

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

CRITICAL_SECTION m_csObjMap;

Observações

Garante o acesso sincronizado ao mapa de objetos.

CComModule::m_csTypeInfoHolder

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

CRITICAL_SECTION m_csTypeInfoHolder;

Observações

Assegura acesso sincronizado à biblioteca de tipos.

CComModule::m_csWindowCreate

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

CRITICAL_SECTION m_csWindowCreate;

Observações

Assegura o acesso sincronizado à informação da classe de janela e aos dados estáticos usados durante a criação da janela.

CComModule::m_hInst

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HINSTANCE m_hInst;

Observações

Contém o handle da instância do módulo.

O método Init define m_hInst para a alça passada para DLLMain ou WinMain.

CComModule::m_hInstResource

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HINSTANCE m_hInstResource;

Observações

Por defeito, contém o handle da instância do módulo.

O método Init define m_hInstResource para a alça passada para DLLMain ou WinMain. Podes definir m_hInstResource explicitamente o handle para um recurso.

O método GetResourceInstance devolve o handle armazenado em m_hInstResource.

CComModule::m_hInstTypeLib

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HINSTANCE m_hInstTypeLib;

Observações

Por defeito, contém o handle da instância do módulo.

O método Init define m_hInstTypeLib para a alça passada para DLLMain ou WinMain. Podes definir m_hInstTypeLib explicitamente para o handle uma biblioteca de tipos.

O método GetTypeLibInstance devolve o handle armazenado em m_hInstTypeLib.

CComModule::m_pObjMap

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

_ATL_OBJMAP_ENTRY* m_pObjMap;

Observações

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

CComModule::RegisterClassHelper

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

CLSID
[dentro] O CLSID do objeto a registar.

lpszProgID
[dentro] O ProgID associado ao objeto.

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

nDescID
[dentro] O identificador de um recurso string para a descrição do objeto.

dwBandeiras
[dentro] Especifica o modelo de threading a introduzir no registo. Os valores possíveis são THREADFLAGS_APARTMENT, THREADFLAGS_BOTH ou AUTPRXFLAG.

Valor de retorno

Um valor HRESULT padrão.

Observações

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

O método UpdateRegistryClass chama RegisterClassHelper.

CComModule::RegisterClassObjects

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

dwClsContext
[dentro] Especifica o contexto em que o objeto de classe deve ser executado. Os valores possíveis são CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER ou CLSCTX_LOCAL_SERVER. Para uma descrição destes valores, veja CLSCTX no SDK do Windows.

dwBandeiras
[dentro] Determina os tipos de ligação ao objeto de classe. Os valores possíveis são REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE ou REGCLS_MULTI_SEPARATE. Para uma descrição destes valores, veja REGCLS no SDK do Windows.

Valor de retorno

Um valor HRESULT padrão.

Observações

Regista um objeto de classe EXE com OLE para que outras aplicações possam ligar-se a ele. Este método está disponível apenas para EXEs.

CComModule::RegisterServer

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

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

pCLSID
[dentro] Aponta para o CLSID do objeto a registar. Se for NULL (o valor padrão), todos os objetos no mapa de objetos serão registados.

Valor de retorno

Um valor HRESULT padrão.

Observações

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

Se o bRegTypeLib for VERDADEIRO, a informação da biblioteca de tipos também será atualizada.

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

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

CComModule::RegisterTypeLib

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

lpszIndex
[dentro] String no formato "\\N", onde N é o índice inteiro do recurso TYPELIB.

Valor de retorno

Um valor HRESULT padrão.

Observações

Adiciona informação sobre uma biblioteca de tipos ao registo do sistema.

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

CComModule::RevokeClassObjects

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

HRESULT RevokeClassObjects() throw();

Valor de retorno

Um valor HRESULT padrão.

Observações

Remove o objeto de classe. Este método está disponível apenas para EXEs.

CComModule::Term

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

void Term() throw();

Observações

Liberta todos os membros dos dados.

CComModule::UnregisterClassHelper

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para mais detalhes.

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

Parâmetros

CLSID
[dentro] O CLSID do objeto a ser desregistado.

lpszProgID
[dentro] O ProgID associado ao objeto.

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

Valor de retorno

Um valor HRESULT padrão.

Observações

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

O método UpdateRegistryClass chama UnregisterClassHelper.

CComModule::UnregisterServer

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para 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 está registada.

pCLSID
Aponta para o CLSID do objeto a ser não registado. Se for NULL (o valor padrão), todos os objetos no mapa de objetos serão desregistados.

Valor de retorno

Um valor HRESULT padrão.

Observações

Dependendo do parâmetro pCLSID , desregista um único objeto de classe ou todos os objetos do mapa do objeto.

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

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

CComModule::UpdateRegistryClass

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para 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 registar ou não registar.

lpszProgID
O ProgID associado ao objeto.

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

nDescID
O identificador do recurso string para a descrição do objeto.

szDesc
Uma cadeia contendo a descrição do objeto.

dwBandeiras
Especifica o modelo de threading a introduzir no registo. Os valores possíveis são THREADFLAGS_APARTMENT, THREADFLAGS_BOTH ou AUTPRXFLAG.

bRegister
Indica se o objeto deve ser registado.

Valor de retorno

Um valor HRESULT padrão.

Observações

Se o bRegister for TRUE, este método entra no registo padrão da classe do objeto no registo do sistema.

Se o bRegister for FALSO, remove o registo do objeto.

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

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

CComModule::UpdateRegistryFromResourceD

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para 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
[dentro] Um nome de recurso.

nResID
[dentro] Um ID de recurso.

bRegister
[dentro] Indica se o objeto deve ser registado.

pMapEntries
[dentro] Um ponteiro para o mapa de substituição que armazena valores associados aos parâmetros substituíveis do script. O ATL utiliza %MODULE%automaticamente . Para usar parâmetros substituíveis adicionais, consulte as Observações para mais detalhes. Caso contrário, use o valor padrão NULL.

Valor de retorno

Um valor HRESULT padrão.

Observações

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

Se o bRegister for TRUE, este método regista o objeto no registo do sistema; caso contrário, desregista o objeto.

Ao especificar o DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID macro, UpdateRegistryFromResourceD será invocado automaticamente quando o seu mapa de objetos 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-se um array de _ATL_REGMAP_ENTRIES estruturas, onde cada entrada contém um marcador de posição variável emparelhado com um valor para substituir o marcador em tempo de execução. Depois chama UpdateRegistryFromResourceD, passando o array para o parâmetro pMapEntrs . Isto adiciona todos os valores de substituição nas _ATL_REGMAP_ENTRIES estruturas ao mapa de substituição do Registrador.

Observação

Para ligar estaticamente ao Componente do Registo ATL (Registrar), consulte UpdateRegistryFromResourceS.

Para mais informações sobre parâmetros substituíveis e scripting, consulte o artigo The ATL Registry Component (Registrar).

CComModule::UpdateRegistryFromResourceS

A partir do ATL 7.0, CComModule está obsoleto: consulte Classes de Módulos ATL para 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
[dentro] Um nome de recurso.

nResID
[dentro] Um ID de recurso.

bRegister
[dentro] Indica se o script de recurso deve ser registado.

pMapEntries
[dentro] Um ponteiro para o mapa de substituição que armazena valores associados aos parâmetros substituíveis do script. O ATL utiliza %MODULE%automaticamente . Para usar parâmetros substituíveis adicionais, consulte as Observações para mais detalhes. Caso contrário, use o valor padrão NULL.

Valor de retorno

Um valor HRESULT padrão.

Observações

Semelhante ao UpdateRegistryFromResourceD , exceto UpdateRegistryFromResourceS que cria uma ligação estática ao Componente do Registo ATL (Registrar).

UpdateRegistryFromResourceS será invocado automaticamente quando o seu mapa de objetos for processado, desde que adicione #define _ATL_STATIC_REGISTRY ao seu 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 o DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID macro. Em vez disso, crie-se um array de _ATL_REGMAP_ENTRIES estruturas, onde cada entrada contém um marcador de posição variável emparelhado com um valor para substituir o marcador em tempo de execução. Depois chama UpdateRegistryFromResourceS, passando o array para o parâmetro pMapEntrs . Isto adiciona todos os valores de substituição nas _ATL_REGMAP_ENTRIES estruturas ao mapa de substituição do Registrador.

Para mais informações sobre parâmetros substituíveis e scripting, consulte o artigo The ATL Registry Component (Registrar).

Consulte também

Visão geral da classe