Funzione CoRegisterClassObject (combaseapi.h)
Registra un oggetto classe EXE con OLE in modo che altre applicazioni possano connettersi.
Sintassi
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
Parametri
[in] rclsid
CLSID da registrare.
[in] pUnk
Puntatore all'interfaccia IUnknown nell'oggetto classe la cui disponibilità viene pubblicata.
[in] dwClsContext
Contesto in cui eseguire il codice eseguibile. Per informazioni su questi valori di contesto, vedere l'enumerazione CLSCTX .
[in] flags
Indica la modalità di creazione delle connessioni all'oggetto classe. Per informazioni su questi flag, vedere l'enumerazione REGCLS .
[out] lpdwRegister
Puntatore a un valore che identifica l'oggetto di classe registrato; usato successivamente dalla funzione CoRevokeClassObject per revocare la registrazione.
Valore restituito
Questa funzione può restituire i valori restituiti standard E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
L'oggetto classe è stato registrato correttamente. |
Commenti
Le applicazioni dell'oggetto EXE devono chiamare CoRegisterClassObject all'avvio. Può anche essere usato per registrare oggetti interni da usare dallo stesso exe o da altri codici (ad esempio DLL) usati dall'EXE. Solo le applicazioni dell'oggetto EXE chiamano CoRegisterClassObject. I gestori oggetti o le applicazioni dell'oggetto DLL non chiamano questa funzione, ma devono implementare ed esportare la funzione DllGetClassObject .
All'avvio, un'applicazione dell'oggetto EXE a più usi deve creare un oggetto classe (con l'interfaccia IClassFactory in esso) e chiamare CoRegisterClassObject per registrare l'oggetto classe. Le applicazioni oggetto che supportano diverse classi ,ad esempio più tipi di oggetti incorporabili, devono allocare e registrare un oggetto classe diverso per ogni oggetto.
Più registrazioni dello stesso oggetto di classe sono indipendenti e non generano un errore. Ogni registrazione successiva restituisce una chiave univoca in lpdwRegister.
Più applicazioni MDI (Document Interface) devono registrare gli oggetti di classe. Le applicazioni SDI (Single Document Interface) devono registrare gli oggetti di classe solo se possono essere avviate tramite l'opzione /Embedding .
Il server per un oggetto di classe deve chiamare CoRevokeClassObject per revocare l'oggetto classe (rimuovere la relativa registrazione) quando tutte le operazioni seguenti sono vere:
- Non sono presenti istanze esistenti della definizione dell'oggetto.
- Non sono presenti blocchi sull'oggetto classe.
- L'applicazione che fornisce servizi all'oggetto classe non è sotto il controllo utente (non visibile all'utente nella visualizzazione).
A partire da Windows Server 2003, se un'applicazione dell'oggetto COM viene registrata come servizio, COM verifica la registrazione. COM assicura che l'ID processo del servizio, nella gestione del controllo del servizio (SCM), corrisponda all'ID processo del processo di registrazione. In caso contrario, COM ha esito negativo nella registrazione. Se l'applicazione dell'oggetto COM viene eseguita nell'account di sistema senza chiave del Registro di sistema, COM considera l'identità dell'applicazione oggetti come avvio dell'utente.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [app desktop | App UWP] |
Server minimo supportato | Windows 2000 Server [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | combaseapi.h (include Objbase.h) |
Libreria | Ole32.lib |
DLL | Ole32.dll |