Funzione DllGetClassObject (combaseapi.h)

Recupera l'oggetto classe da un gestore oggetti DLL o un'applicazione oggetto.

OLE non fornisce questa funzione. Le DLL che supportano il modello COM (OLE Component Object Model) devono implementare DllGetClassObject nei gestori di oggetti OLE o nelle applicazioni DLL.

Sintassi

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

Parametri

[in] rclsid

CLSID che associa i dati e il codice corretti.

[in] riid

Riferimento all'identificatore dell'interfaccia che il chiamante deve usare per comunicare con l'oggetto classe. In genere, questo è IID_IClassFactory (definito nelle intestazioni OLE come identificatore di interfaccia per IClassFactory).

[out] ppv

Indirizzo di una variabile del puntatore che riceve il puntatore di interfaccia richiesto in riid. Al termine della restituzione, *ppv contiene il puntatore all'interfaccia richiesto. Se si verifica un errore, il puntatore all'interfaccia è NULL.

Valore restituito

Questa funzione può restituire i valori restituiti standard E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
L'oggetto è stato recuperato correttamente.
CLASS_E_CLASSNOTAVAILABLE
La DLL non supporta la classe (definizione dell'oggetto).

Commenti

Se una chiamata alla funzione CoGetClassObject trova l'oggetto classe da caricare in una DLL, CoGetClassObject usa la funzione DllGetClassObject esportata della DLL.

Note ai chiamanti

Non è consigliabile chiamare direttamente DllGetClassObject . Quando un oggetto viene definito in una DLL, CoGetClassObject chiama la funzione CoLoadLibrary per caricare la DLL, che a sua volta chiama DllGetClassObject.

Note per gli implementatori

È necessario implementare DllGetClassObject in e esportarlo da DLL che supportano COM.

Esempio

Di seguito è riportato un esempio (in C++) di un'implementazione di DllGetClassObject. In questo esempio DllGetClassObject crea un oggetto classe e chiama il relativo metodo QueryInterface per recuperare un puntatore all'interfaccia richiesta in riid. L'implementazione rilascia il riferimento che contiene all'interfaccia IClassFactory perché restituisce un puntatore con conteggio dei riferimenti a IClassFactory al chiamante.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione combaseapi.h (include Objbase.h)

Vedi anche

CoGetClassObject

Dllcanunloadnow