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 |
---|---|
|
Das Objekt wurde erfolgreich abgerufen. |
|
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) |