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 |
---|---|
|
L’objet a été récupéré avec succès. |
|
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) |