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 |
---|---|
|
L'oggetto è stato recuperato correttamente. |
|
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) |