Função DllGetClassObject (combaseapi.h)
Recupera o objeto de classe de um manipulador de objeto DLL ou aplicativo de objeto.
O OLE não fornece essa função. As DLLs que dão suporte ao COM (Modelo de Objeto de Componente OLE) devem implementar DllGetClassObject em manipuladores de objetos OLE ou aplicativos DLL.
Sintaxe
HRESULT DllGetClassObject(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
Parâmetros
[in] rclsid
O CLSID que associará os dados e o código corretos.
[in] riid
Uma referência ao identificador da interface que o chamador deve usar para se comunicar com o objeto de classe. Normalmente, isso é IID_IClassFactory (definido nos cabeçalhos OLE como o identificador de interface para IClassFactory).
[out] ppv
O endereço de uma variável de ponteiro que recebe o ponteiro de interface solicitado em riid. Após o retorno bem-sucedido, *ppv contém o ponteiro de interface solicitado. Se ocorrer um erro, o ponteiro da interface será NULL.
Retornar valor
Essa função pode retornar os valores de retorno padrão E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, bem como os valores a seguir.
Código de retorno | Descrição |
---|---|
|
O objeto foi recuperado com êxito. |
|
A DLL não dá suporte à classe (definição de objeto). |
Comentários
Se uma chamada para a função CoGetClassObject encontrar o objeto de classe que deve ser carregado em uma DLL, CoGetClassObject usará a função DllGetClassObject exportada da DLL.
Anotações para chamadores
Você não deve chamar DllGetClassObject diretamente. Quando um objeto é definido em uma DLL, CoGetClassObject chama a função CoLoadLibrary para carregar a DLL, que, por sua vez, chama DllGetClassObject.Anotações aos implementadores
Você precisa implementar DllGetClassObject em DLLs (e exportá-la de) que dão suporte a COM.Exemplos
Veja a seguir um exemplo (em C++) de uma implementação de DllGetClassObject. Neste exemplo, DllGetClassObject cria um objeto de classe e chama seu método QueryInterface para recuperar um ponteiro para a interface solicitada em riid. A implementação libera a referência que contém à interface IClassFactory porque retorna um ponteiro contado por referência para IClassFactory para o chamador.
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 | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | combaseapi.h (inclua Objbase.h) |