Fungsi DllGetClassObject (combaseapi.h)
Mengambil objek kelas dari handler objek DLL atau aplikasi objek.
OLE tidak menyediakan fungsi ini. DLL yang mendukung OLE Component Object Model (COM) harus mengimplementasikan DllGetClassObject di handler objek OLE atau aplikasi DLL.
Sintaks
HRESULT DllGetClassObject(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
Parameter
[in] rclsid
CLSID yang akan mengaitkan data dan kode yang benar.
[in] riid
Referensi ke pengidentifikasi antarmuka yang digunakan pemanggil untuk berkomunikasi dengan objek kelas. Biasanya, ini IID_IClassFactory (didefinisikan dalam header OLE sebagai pengidentifikasi antarmuka untuk IClassFactory).
[out] ppv
Alamat variabel pointer yang menerima pointer antarmuka yang diminta dalam riid. Setelah berhasil dikembalikan, *ppv berisi penunjuk antarmuka yang diminta. Jika terjadi kesalahan, penunjuk antarmuka adalah NULL.
Nilai kembali
Fungsi ini dapat mengembalikan nilai pengembalian standar E_INVALIDARG, E_OUTOFMEMORY, dan E_UNEXPECTED, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Objek berhasil diambil. |
|
DLL tidak mendukung kelas (definisi objek). |
Keterangan
Jika panggilan ke fungsi CoGetClassObject menemukan objek kelas yang akan dimuat dalam DLL, CoGetClassObject menggunakan fungsi DllGetClassObject yang diekspor DLL.
Catatan untuk Penelepon
Anda tidak boleh memanggil DllGetClassObject secara langsung. Ketika objek didefinisikan dalam DLL, CoGetClassObject memanggil fungsi CoLoadLibrary untuk memuat DLL, yang, pada gilirannya, memanggil DllGetClassObject.Catatan untuk Pelaksana
Anda perlu menerapkan DllGetClassObject di (dan mengekspornya dari) DLL yang mendukung COM.Contoh
Berikut ini adalah contoh (dalam C++) implementasi DllGetClassObject. Dalam contoh ini, DllGetClassObject membuat objek kelas dan memanggil metode QueryInterface-nya untuk mengambil pointer ke antarmuka yang diminta dalam riid. Implementasi merilis referensi yang dipegangnya ke antarmuka IClassFactory karena mengembalikan pointer yang dihitung referensi ke IClassFactory ke pemanggil.
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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | combaseapi.h (termasuk Objbase.h) |