CoRegisterClassObject, fonction (combaseapi.h)
Inscrit un objet de classe EXE auprès d’OLE afin que d’autres applications puissent s’y connecter.
Syntaxe
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
Paramètres
[in] rclsid
CLSID à inscrire.
[in] pUnk
Pointeur vers l’interface IUnknown sur l’objet de classe dont la disponibilité est en cours de publication.
[in] dwClsContext
Contexte dans lequel le code exécutable doit être exécuté. Pour plus d’informations sur ces valeurs de contexte, consultez l’énumération CLSCTX .
[in] flags
Indique comment les connexions sont établies à l’objet de classe. Pour plus d’informations sur ces indicateurs, consultez l’énumération REGCLS .
[out] lpdwRegister
Pointeur vers une valeur qui identifie l’objet de classe inscrit ; utilisé ultérieurement par la fonction CoRevokeClassObject pour révoquer l’inscription.
Valeur retournée
Cette fonction peut retourner les valeurs de retour standard E_INVALIDARG, E_OUTOFMEMORY et E_UNEXPECTED, ainsi que les valeurs suivantes.
Code de retour | Description |
---|---|
|
L’objet de classe a été inscrit avec succès. |
Remarques
Les applications d’objet EXE doivent appeler CoRegisterClassObject au démarrage. Il peut également être utilisé pour inscrire des objets internes en vue d’une utilisation par le même EXE ou un autre code (par exemple, des DLL) que l’EXE utilise. Seules les applications d’objet EXE appellent CoRegisterClassObject. Les gestionnaires d’objets ou les applications d’objets DLL n’appellent pas cette fonction. Au lieu de cela, ils doivent implémenter et exporter la fonction DllGetClassObject .
Au démarrage, une application objet EXE à usage multiple doit créer un objet de classe (avec l’interface IClassFactory ) et appeler CoRegisterClassObject pour inscrire l’objet de classe. Les applications objet qui prennent en charge plusieurs classes différentes (par exemple, plusieurs types d’objets pouvant être incorporés) doivent allouer et inscrire un objet de classe différent pour chacune d’elles.
Plusieurs inscriptions du même objet de classe sont indépendantes et ne génèrent pas d’erreur. Chaque inscription suivante génère une clé unique dans lpdwRegister.
Les applications MDI (Multiple Document Interface) doivent inscrire leurs objets de classe. Les applications SDI (Single Document Interface) doivent inscrire leurs objets de classe uniquement si elles peuvent être démarrées à l’aide du commutateur /Embedding .
Le serveur d’un objet de classe doit appeler CoRevokeClassObject pour révoquer l’objet de classe (supprimer son inscription) lorsque toutes les conditions suivantes sont remplies :
- Il n’existe aucune instance de la définition d’objet.
- Il n’y a aucun verrou sur l’objet de classe.
- L’application fournissant des services à l’objet de classe n’est pas sous contrôle utilisateur (non visible par l’utilisateur à l’écran).
À partir de Windows Server 2003, si une application objet COM est inscrite en tant que service, COM vérifie l’inscription. COM s’assure que l’ID de processus du service, dans le gestionnaire de contrôle de service (SCM), correspond à l’ID de processus du processus d’inscription. Si ce n’est pas le cas, COM échoue à l’inscription. Si l’application objet COM s’exécute dans le compte système sans clé de Registre, COM traite l’identité de l’application d’objets comme utilisateur de lancement.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | combaseapi.h (inclure Objbase.h) |
Bibliothèque | Ole32.lib |
DLL | Ole32.dll |