Función DllGetClassObject (combaseapi.h)

Recupera el objeto de clase de un controlador de objetos DLL o una aplicación de objeto.

OLE no proporciona esta función. Los archivos DLL que admiten el modelo de objetos componentes OLE (COM) deben implementar DllGetClassObject en controladores de objetos OLE o aplicaciones DLL.

Sintaxis

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

Parámetros

[in] rclsid

CLSID que asociará los datos y el código correctos.

[in] riid

Referencia al identificador de la interfaz que el autor de la llamada va a usar para comunicarse con el objeto de clase. Normalmente, esto es IID_IClassFactory (definido en los encabezados OLE como identificador de interfaz para IClassFactory).

[out] ppv

Dirección de una variable de puntero que recibe el puntero de interfaz solicitado en riid. Tras la devolución correcta, *ppv contiene el puntero de interfaz solicitado. Si se produce un error, el puntero de interfaz es NULL.

Valor devuelto

Esta función puede devolver los valores devueltos estándar E_INVALIDARG, E_OUTOFMEMORY y E_UNEXPECTED, así como los siguientes valores.

Código devuelto Descripción
S_OK
El objeto se recuperó correctamente.
CLASS_E_CLASSNOTAVAILABLE
El archivo DLL no admite la clase (definición de objeto).

Comentarios

Si una llamada a la función CoGetClassObject busca el objeto de clase que se va a cargar en un archivo DLL, CoGetClassObject usa la función DllGetClassObject exportada del archivo DLL.

Notas a los autores de llamadas

No debe llamar directamente a DllGetClassObject . Cuando se define un objeto en un archivo DLL, CoGetClassObject llama a la función CoLoadLibrary para cargar el archivo DLL, que, a su vez, llama a DllGetClassObject.

Notas para los implementadores

Debe implementar DllGetClassObject en archivos DLL (y exportarlos desde) que admitan COM.

Ejemplos

A continuación se muestra un ejemplo (en C++) de una implementación de DllGetClassObject. En este ejemplo, DllGetClassObject crea un objeto de clase y llama a su método QueryInterface para recuperar un puntero a la interfaz solicitada en riid. La implementación libera la referencia que contiene a la interfaz IClassFactory porque devuelve un puntero con recuento de referencias a IClassFactory al autor de la llamada.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado combaseapi.h (incluya Objbase.h)

Consulte también

CoGetClassObject

DllCanUnloadNow