Condividi tramite


Classe CComModule

A partire da ATL 7.0, CComModule è deprecato: vedere Classi di moduli ATL per altri dettagli.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

class CComModule : public _ATL_MODULE

Membri

Metodi pubblici

Nome Descrizione
CComModule::GetClassObject Crea un oggetto di un CLSID specificato. Solo per dll.
CComModule::GetModuleInstance Restituisce m_hInst.
CComModule::GetResourceInstance Restituisce m_hInstResource.
CComModule::GetTypeLibInstance Restituisce m_hInstTypeLib.
CComModule::Init Inizializza i membri dati.
CComModule::RegisterClassHelper Immette la registrazione della classe standard di un oggetto nel Registro di sistema.
CComModule::RegisterClassObjects Registra l'oggetto classe. Solo per exes.
CComModule::RegisterServer Aggiorna il Registro di sistema per ogni oggetto nella mappa degli oggetti.
CComModule::RegisterTypeLib Registra una libreria dei tipi.
CComModule::RevokeClassObjects Revoca l'oggetto classe. Solo per exes.
CComModule::Term Rilascia i membri dati.
CComModule::UnregisterClassHelper Rimuove la registrazione della classe standard di un oggetto dal Registro di sistema.
CComModule::UnregisterServer Annulla la registrazione di ogni oggetto nella mappa oggetti.
CComModule::UpdateRegistryClass Registra o annulla la registrazione della classe standard di un oggetto.
CComModule::UpdateRegistryFromResourceD Esegue lo script contenuto in una risorsa specificata per registrare o annullare la registrazione di un oggetto.
CComModule::UpdateRegistryFromResourceS Collegamenti statici al componente del Registro di sistema ATL. Esegue lo script contenuto in una risorsa specificata per registrare o annullare la registrazione di un oggetto.

Membri dati pubblici

Nome Descrizione
CComModule::m_csObjMap Garantisce l'accesso sincronizzato alle informazioni sulla mappa degli oggetti.
CComModule::m_csTypeInfoHolder Garantisce l'accesso sincronizzato alle informazioni della libreria dei tipi.
CComModule::m_csWindowCreate Garantisce l'accesso sincronizzato alle informazioni sulla classe finestra e ai dati statici usati durante la creazione della finestra.
CComModule::m_hInst Contiene l'handle per l'istanza del modulo.
CComModule::m_hInstResource Per impostazione predefinita, contiene l'handle per l'istanza del modulo.
CComModule::m_hInstTypeLib Per impostazione predefinita, contiene l'handle per l'istanza del modulo.
CComModule::m_pObjMap Punta alla mappa oggetti gestita dall'istanza del modulo.

Osservazioni:

Nota

Questa classe è deprecata e le procedure guidate per la generazione di codice ATL ora usano le classi derivate CAtlAutoThreadModule e CAtlModule . Per altre informazioni, vedere Classi di moduli ATL. Le informazioni seguenti sono destinate all'uso con le applicazioni create con le versioni precedenti di ATL. CComModule è ancora parte di ATL per la funzionalità indietro.

CComModule implementa un modulo server COM, consentendo a un client di accedere ai componenti del modulo. CComModule supporta i moduli DLL (in-process) e EXE (locale).

Un'istanza CComModule usa una mappa oggetti per mantenere un set di definizioni di oggetti di classe. Questa mappa oggetti viene implementata come matrice di _ATL_OBJMAP_ENTRY strutture e contiene informazioni per:

  • Immissione e rimozione delle descrizioni degli oggetti nel Registro di sistema.

  • Creazione di un'istanza di oggetti tramite una class factory.

  • Stabilire la comunicazione tra un client e l'oggetto radice nel componente.

  • Esecuzione della gestione della durata degli oggetti classe.

Quando si esegue atl COM AppWizard, la procedura guidata genera _Moduleautomaticamente , un'istanza globale di CComModule o una classe derivata da essa. Per altre informazioni sulla Creazione guidata progetto ATL, vedere l'articolo Creazione di un progetto ATL.

Oltre a CComModule, ATL fornisce CComAutoThreadModule, che implementa un modulo modello apartment per i servizi EXEs e Windows. Derivare il modulo da CComAutoThreadModule quando si desidera creare oggetti in più appartamenti.

Gerarchia di ereditarietà

_ATL_MODULE

CAtlModule

CAtlModuleT

CComModule

Requisiti

Intestazione: atlbase.h

CComModule::GetClassObject

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

rclsid
[in] CLSID dell'oggetto da creare.

riid
[in] IID dell'interfaccia richiesta.

ppv
[out] Puntatore al puntatore all'interfaccia identificato da riid. Se l'oggetto non supporta questa interfaccia, ppv è impostato su NULL.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Crea un oggetto del CLSID specificato e recupera un puntatore di interfaccia a questo oggetto.

GetClassObject è disponibile solo per le DLL.

CComModule::GetModuleInstance

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HINSTANCE GetModuleInstance() throw();

Valore restituito

HINSTANCE che identifica questo modulo.

Osservazioni:

Restituisce il membro dati m_hInst .

CComModule::GetResourceInstance

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HINSTANCE GetResourceInstance() throw();

Valore restituito

UNA HINSTANCE.

Osservazioni:

Restituisce il membro dati m_hInstResource .

CComModule::GetTypeLibInstance

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HINSTANCE GetTypeLibInstance() const throw();

Valore restituito

UNA HINSTANCE.

Osservazioni:

Restituisce il membro dati m_hInstTypeLib .

CComModule::Init

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

p
[in] Puntatore a una matrice di voci della mappa di oggetti.

h
[in] HINSTANCE passata a DLLMain o WinMain.

plibid
[in] Puntatore al LIBID della libreria dei tipi associata al progetto.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Inizializza tutti i membri dati.

CComModule::m_csObjMap

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

CRITICAL_SECTION m_csObjMap;

Osservazioni:

Garantisce l'accesso sincronizzato alla mappa oggetti.

CComModule::m_csTypeInfoHolder

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

CRITICAL_SECTION m_csTypeInfoHolder;

Osservazioni:

Garantisce l'accesso sincronizzato alla libreria dei tipi.

CComModule::m_csWindowCreate

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

CRITICAL_SECTION m_csWindowCreate;

Osservazioni:

Garantisce l'accesso sincronizzato alle informazioni sulla classe finestra e ai dati statici usati durante la creazione della finestra.

CComModule::m_hInst

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HINSTANCE m_hInst;

Osservazioni:

Contiene l'handle per l'istanza del modulo.

Il metodo Init imposta m_hInst sull'handle passato a DLLMain o WinMain.

CComModule::m_hInstResource

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HINSTANCE m_hInstResource;

Osservazioni:

Per impostazione predefinita, contiene l'handle per l'istanza del modulo.

Il metodo Init imposta m_hInstResource sull'handle passato a DLLMain o WinMain. È possibile impostare m_hInstResource in modo esplicito l'handle su una risorsa.

Il metodo GetResourceInstance restituisce l'handle archiviato in m_hInstResource.

CComModule::m_hInstTypeLib

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HINSTANCE m_hInstTypeLib;

Osservazioni:

Per impostazione predefinita, contiene l'handle per l'istanza del modulo.

Il metodo Init imposta m_hInstTypeLib sull'handle passato a DLLMain o WinMain. È possibile impostare m_hInstTypeLib in modo esplicito l'handle su una libreria dei tipi.

Il metodo GetTypeLibInstance restituisce l'handle archiviato in m_hInstTypeLib.

CComModule::m_pObjMap

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

_ATL_OBJMAP_ENTRY* m_pObjMap;

Osservazioni:

Punta alla mappa oggetti gestita dall'istanza del modulo.

CComModule::RegisterClassHelper

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

clsid
[in] CLSID dell'oggetto da registrare.

lpszProgID
[in] ProgID associato all'oggetto .

lpszVerIndProgID
[in] ProgID indipendente dalla versione associato all'oggetto .

nDescID
[in] Identificatore di una risorsa stringa per la descrizione dell'oggetto.

dwFlags
[in] Specifica il modello di threading da immettere nel Registro di sistema. I valori possibili sono THREADFLAGS_APARTMENT, THREADFLAGS_BOTH o AUTPRXFLAG.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Immette la registrazione della classe standard di un oggetto nel Registro di sistema.

Il metodo UpdateRegistryClass chiama RegisterClassHelper.

CComModule::RegisterClassObjects

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

dwClsContext
[in] Specifica il contesto in cui deve essere eseguito l'oggetto classe. I valori possibili sono CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER o CLSCTX_LOCAL_SERVER. Per una descrizione di questi valori, vedere CLSCTX in Windows SDK.

dwFlags
[in] Determina i tipi di connessione all'oggetto classe. I valori possibili sono REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE o REGCLS_MULTI_SEPARATE. Per una descrizione di questi valori, vedere REGCLS in Windows SDK.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Registra un oggetto classe EXE con OLE in modo che altre applicazioni possano connettersi. Questo metodo è disponibile solo per exes.

CComModule::RegisterServer

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

bRegTypeLib
[in] Indica se la libreria dei tipi verrà registrata. Il valore predefinito è FALSE.

pCLSID
[in] Punta al CLSID dell'oggetto da registrare. Se NULL (valore predefinito), verranno registrati tutti gli oggetti nella mappa oggetti.

Valore restituito

Valore HRESULT standard.

Osservazioni:

A seconda del parametro pCLSID , aggiorna il Registro di sistema per un singolo oggetto classe o per tutti gli oggetti nella mappa oggetti.

Se bRegTypeLib è TRUE, verranno aggiornate anche le informazioni sulla libreria dei tipi.

Per informazioni su come aggiungere una voce alla mappa oggetti, vedere OBJECT_ENTRY_AUTO .

RegisterServer verrà chiamato automaticamente da DLLRegisterServer per una DLL o da WinMain per un'esecuzione EXE con l'opzione della /RegServer riga di comando.

CComModule::RegisterTypeLib

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

lpszIndex
[in] Stringa nel formato "\\N", dove N è l'indice intero della risorsa TYPELIB.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Aggiunge informazioni su una libreria dei tipi al Registro di sistema.

Se l'istanza del modulo contiene più librerie dei tipi, usare la seconda versione di questo metodo per specificare la libreria dei tipi da usare.

CComModule::RevokeClassObjects

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

HRESULT RevokeClassObjects() throw();

Valore restituito

Valore HRESULT standard.

Osservazioni:

Rimuove l'oggetto classe. Questo metodo è disponibile solo per exes.

CComModule::Term

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

void Term() throw();

Osservazioni:

Rilascia tutti i membri dati.

CComModule::UnregisterClassHelper

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

clsid
[in] CLSID dell'oggetto da annullare.

lpszProgID
[in] ProgID associato all'oggetto .

lpszVerIndProgID
[in] ProgID indipendente dalla versione associato all'oggetto .

Valore restituito

Valore HRESULT standard.

Osservazioni:

Rimuove la registrazione della classe standard di un oggetto dal Registro di sistema.

Il metodo UpdateRegistryClass chiama UnregisterClassHelper.

CComModule::UnregisterServer

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

bUnRegTypeLib
Se TRUE, anche la libreria dei tipi viene annullata la registrazione.

pCLSID
Punta al CLSID dell'oggetto da annullare. Se NULL (valore predefinito), tutti gli oggetti nella mappa oggetti verranno annullati.

Valore restituito

Valore HRESULT standard.

Osservazioni:

A seconda del parametro pCLSID , annulla la registrazione di un singolo oggetto di classe o di tutti gli oggetti nella mappa oggetti.

UnregisterServer verrà chiamato automaticamente da DLLUnregisterServer per una DLL o da WinMain per un'esecuzione EXE con l'opzione della /UnregServer riga di comando.

Per informazioni su come aggiungere una voce alla mappa oggetti, vedere OBJECT_ENTRY_AUTO .

CComModule::UpdateRegistryClass

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

clsid
CLSID dell'oggetto da registrare o annullare la registrazione.

lpszProgID
ProgID associato all'oggetto .

lpszVerIndProgID
ProgID indipendente dalla versione associato all'oggetto .

nDescID
Identificatore della risorsa stringa per la descrizione dell'oggetto.

szDesc
Stringa contenente la descrizione dell'oggetto.

dwFlags
Specifica il modello di threading da immettere nel Registro di sistema. I valori possibili sono THREADFLAGS_APARTMENT, THREADFLAGS_BOTH o AUTPRXFLAG.

bRegister
Indica se l'oggetto deve essere registrato.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Se bRegister è TRUE, questo metodo immette la registrazione della classe standard dell'oggetto nel Registro di sistema.

Se bRegister è FALSE, rimuove la registrazione dell'oggetto.

A seconda del valore di bRegister, UpdateRegistryClass chiama RegisterClassHelper o UnregisterClassHelper.

Specificando la macro DECLARE_REGISTRY , UpdateRegistryClass verrà richiamata automaticamente quando viene elaborata la mappa degli oggetti.

CComModule::UpdateRegistryFromResourceD

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

lpszRes
[in] Nome della risorsa.

nResID
[in] ID risorsa.

bRegister
[in] Indica se l'oggetto deve essere registrato.

pMapEntries
[in] Puntatore alla mappa di sostituzione che archivia i valori associati ai parametri sostituibili dello script. ATL usa %MODULE%automaticamente . Per usare parametri sostituibili aggiuntivi, vedere la sezione Osservazioni per informazioni dettagliate. In caso contrario, usare il valore predefinito NULL.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Esegue lo script contenuto nella risorsa specificata da lpszRes o nResID.

Se bRegister è TRUE, questo metodo registra l'oggetto nel Registro di sistema; in caso contrario, annulla la registrazione dell'oggetto.

Specificando la macro DECLARE_REGISTRY_RESOURCE o DECLARE_REGISTRY_RESOURCEID , UpdateRegistryFromResourceD verrà richiamata automaticamente quando viene elaborata la mappa degli oggetti.

Nota

Per sostituire i valori di sostituzione in fase di esecuzione, non specificare la macro DECLARE_REGISTRY_RESOURCE o DECLARE_REGISTRY_RESOURCEID. Creare invece una matrice di _ATL_REGMAP_ENTRIES strutture, in cui ogni voce contiene un segnaposto variabile associato a un valore per sostituire il segnaposto in fase di esecuzione. Chiamare UpdateRegistryFromResourceDquindi , passando la matrice per il parametro pMapEntries . In questo modo tutti i valori di sostituzione delle _ATL_REGMAP_ENTRIES strutture vengono aggiunti alla mappa di sostituzione del registrar.

Nota

Per collegare in modo statico al componente del Registro di sistema ATL (Registrar), vedere UpdateRegistryFromResourceS.

Per altre informazioni sui parametri e sugli script sostituibili, vedere l'articolo Componente del Registro di sistema ATL (registrar).

CComModule::UpdateRegistryFromResourceS

A partire da ATL 7.0, CComModule è obsoleto: vedere Classi di moduli ATL per altri dettagli.

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

Parametri

lpszRes
[in] Nome della risorsa.

nResID
[in] ID risorsa.

bRegister
[in] Indica se lo script della risorsa deve essere registrato.

pMapEntries
[in] Puntatore alla mappa di sostituzione che archivia i valori associati ai parametri sostituibili dello script. ATL usa %MODULE%automaticamente . Per usare parametri sostituibili aggiuntivi, vedere la sezione Osservazioni per informazioni dettagliate. In caso contrario, usare il valore predefinito NULL.

Valore restituito

Valore HRESULT standard.

Osservazioni:

Analogamente a UpdateRegistryFromResourceD , ad eccezione UpdateRegistryFromResourceS della creazione di un collegamento statico al componente del Registro di sistema ATL (Registrar).

UpdateRegistryFromResourceSverrà richiamato automaticamente quando la mappa degli oggetti viene elaborata, purché venga aggiunta #define _ATL_STATIC_REGISTRY al file pch.h (stdafx.h in Visual Studio 2017 e versioni precedenti).

Nota

Per sostituire i valori di sostituzione in fase di esecuzione, non specificare la macro DECLARE_REGISTRY_RESOURCE o DECLARE_REGISTRY_RESOURCEID . Creare invece una matrice di _ATL_REGMAP_ENTRIES strutture, in cui ogni voce contiene un segnaposto variabile associato a un valore per sostituire il segnaposto in fase di esecuzione. Chiamare UpdateRegistryFromResourceSquindi , passando la matrice per il parametro pMapEntries . In questo modo tutti i valori di sostituzione delle _ATL_REGMAP_ENTRIES strutture vengono aggiunti alla mappa di sostituzione del registrar.

Per altre informazioni sui parametri e sugli script sostituibili, vedere l'articolo Componente del Registro di sistema ATL (registrar).

Vedi anche

Cenni preliminari sulla classe