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,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功擷取物件。 |
|
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) |