Freigeben über


DllGetClassObject-Funktion (combaseapi.h)

Ruft das Klassenobjekt aus einem DLL-Objekthandler oder einer Objektanwendung ab.

OLE stellt diese Funktion nicht bereit. DLLs, die das OLE Component Object Model (COM) unterstützen, müssen DllGetClassObject in OLE-Objekthandlern oder DLL-Anwendungen implementieren.

Syntax

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

Parameter

[in] rclsid

Die CLSID, die die richtigen Daten und den richtigen Code zuordnen wird.

[in] riid

Ein Verweis auf den Bezeichner der Schnittstelle, den der Aufrufer für die Kommunikation mit dem Klassenobjekt verwenden soll. In der Regel ist dies IID_IClassFactory (in den OLE-Headern als Schnittstellenbezeichner für IClassFactory definiert).

[out] ppv

Die Adresse einer Zeigervariable, die den in riid angeforderten Schnittstellenzeiger empfängt. Nach erfolgreicher Rückgabe enthält *ppv den angeforderten Schnittstellenzeiger. Wenn ein Fehler auftritt, ist der Schnittstellenzeiger NULL.

Rückgabewert

Diese Funktion kann die Standardrückgabewerte E_INVALIDARG, E_OUTOFMEMORY und E_UNEXPECTED sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Das Objekt wurde erfolgreich abgerufen.
CLASS_E_CLASSNOTAVAILABLE
Die DLL unterstützt die -Klasse (Objektdefinition) nicht.

Hinweise

Wenn ein Aufruf der CoGetClassObject-Funktion das Klassenobjekt findet, das in eine DLL geladen werden soll, verwendet CoGetClassObject die exportierte DllGetClassObject-Funktion der DLL.

Hinweise für Anrufer

Sie sollten DllGetClassObject nicht direkt aufrufen. Wenn ein Objekt in einer DLL definiert ist, ruft CoGetClassObject die CoLoadLibrary-Funktion auf, um die DLL zu laden, die wiederum DllGetClassObject aufruft.

Hinweise für Implementierer

Sie müssen DllGetClassObject in DLLs implementieren (und aus diesen exportieren), die COM unterstützen.

Beispiele

Im Folgenden finden Sie ein Beispiel (in C++) für eine Implementierung von DllGetClassObject. In diesem Beispiel erstellt DllGetClassObject ein Klassenobjekt und ruft seine QueryInterface-Methode auf, um einen Zeiger auf die in riid angeforderte Schnittstelle abzurufen. Die Implementierung gibt den Verweis frei, den sie für die IClassFactory-Schnittstelle enthält, da sie einen verweisgezählten Zeiger auf IClassFactory an den Aufrufer zurückgibt.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile combaseapi.h (include Objbase.h)

Weitere Informationen

Cogetclassobject

DllCanUnloadNow