Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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 |
|---|---|
|
El objeto se recuperó correctamente. |
|
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) |