共用方式為


combaseapi.h (DllGetClassObject 函式)

從 DLL 物件處理程式或物件應用程式擷取類別物件。

OLE 不提供此函式。 支援 OLE 元件物件模型 (COM) 的 DLL 必須在 OLE 對象處理程式或 DLL 應用程式中實作 DllGetClassObject

語法

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

參數

[in] rclsid

將關聯正確數據和程式代碼的CLSID。

[in] riid

呼叫端用來與類別對象通訊之介面標識碼的參考。 這通常是IID_IClassFactory (定义在 OLE 標頭中,做為 IClassFactory) 的介面標識符。

[out] ppv

接收 riid 中所要求之介面指標的指標變數位址。 成功傳回時,*ppv 包含要求的介面指標。 如果發生錯誤,介面指標為 NULL

傳回值

此函式可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及下列值。

傳回碼 描述
S_OK
已成功擷取物件。
CLASS_E_CLASSNOTAVAILABLE
DLL 不支援類別 (物件定義) 。

備註

如果呼叫 CoGetClassObject 函式找到要載入 DLL 的類別物件,CoGetClassObject 會使用 DLL 導出的 DllGetClassObject 函式。

來電者附註

您不應該直接呼叫 DllGetClassObject 。 在 DLL 中定義物件時, CoGetClassObject 會呼叫 CoLoadLibrary 函式來載入 DLL,進而呼叫 DllGetClassObject

實作者的注意事項

您必須在 (中實作 DllGetClassObject ,並從支援 COM 的) DLL 匯出它。

範例

以下是 DllGetClassObject 實作的 C++) (範例。 在此範例中, DllGetClassObject 會建立類別物件,並呼叫其 QueryInterface 方法,以擷取 riid 中要求的介面指標。 實作會將它保留的參考釋放至 IClassFactory 介面,因為它會將 IClassFactory 的參考計數指標傳回給呼叫端。

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

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 combaseapi.h (包含 Objbase.h)

另請參閱

CoGetClassObject

DllCanUnloadNow