Partager via


DllGetClassObject, fonction (combaseapi.h)

Récupère l’objet de classe à partir d’un gestionnaire d’objets DLL ou d’une application d’objet.

OLE ne fournit pas cette fonction. Les DLL qui prennent en charge le modèle d’objet de composant OLE (COM) doivent implémenter DllGetClassObject dans les gestionnaires d’objets OLE ou les applications DLL.

Syntaxe

HRESULT DllGetClassObject(
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

Paramètres

[in] rclsid

CLSID qui associera les données et le code corrects.

[in] riid

Référence à l’identificateur de l’interface que l’appelant doit utiliser pour communiquer avec l’objet de classe. Il s’agit généralement de IID_IClassFactory (défini dans les en-têtes OLE comme identificateur d’interface pour IClassFactory).

[out] ppv

Adresse d’une variable de pointeur qui reçoit le pointeur d’interface demandé dans riid. Une fois le retour réussi, *ppv contient le pointeur d’interface demandé. Si une erreur se produit, le pointeur d’interface est NULL.

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
S_OK
L’objet a été récupéré avec succès.
CLASS_E_CLASSNOTAVAILABLE
La DLL ne prend pas en charge la classe (définition d’objet).

Remarques

Si un appel à la fonction CoGetClassObject recherche l’objet de classe qui doit être chargé dans une DLL, CoGetClassObject utilise la fonction DllGetClassObject exportée de la DLL.

Notes aux appelants

Vous ne devez pas appeler DllGetClassObject directement. Lorsqu’un objet est défini dans une DLL, CoGetClassObject appelle la fonction CoLoadLibrary pour charger la DLL, qui, à son tour, appelle DllGetClassObject.

Notes aux implémenteurs

Vous devez implémenter DllGetClassObject dans (et l’exporter à partir de) DLL qui prennent en charge COM.

Exemples

Voici un exemple (en C++) d’une implémentation de DllGetClassObject. Dans cet exemple, DllGetClassObject crée un objet de classe et appelle sa méthode QueryInterface pour récupérer un pointeur vers l’interface demandée dans riid. L’implémentation libère la référence qu’elle détient à l’interface IClassFactory , car elle retourne un pointeur comptabilisé en référence vers IClassFactory vers l’appelant.

HRESULT _export CALLBACK DllGetClassObject 
    (REFCLSID rclsid, REFIID riid, LPVOID * ppvObj) 
{ 
    HRESULT hr = E_OUTOFMEMORY; 
    *ppvObj = NULL; 
 
    CClassFactory *pClassFactory = new CClassFactory(rclsid); 
    if (pClassFactory != NULL)   { 
        hr = pClassFactory->QueryInterface(riid, ppvObj); 
        pClassFactory->Release(); 
    } 
    return hr;
} 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)

Voir aussi

CoGetClassObject

DllCanUnloadNow