Fungsi CoRegisterPSClsid (combaseapi.h)
Memungkinkan DLL yang diunduh untuk mendaftarkan antarmuka kustomnya dalam proses berjalannya sehingga kode marshaling akan dapat membasahkan antarmuka tersebut.
Sintaks
HRESULT CoRegisterPSClsid(
[in] REFIID riid,
[in] REFCLSID rclsid
);
Parameter
[in] riid
Pointer ke IID antarmuka yang akan didaftarkan.
[in] rclsid
Penunjuk ke CLSID DLL yang berisi kode proksi/stub untuk antarmuka kustom yang ditentukan oleh riid.
Nilai kembali
Fungsi ini dapat mengembalikan nilai pengembalian standar E_INVALIDARG, E_OUTOFMEMORY, dan S_OK.
Keterangan
Biasanya, kode yang bertanggung jawab untuk menghidupkan penunjuk antarmuka ke dalam proses yang sedang berjalan membaca bagian HKEY_CLASSES_ROOT\Interfaces registri untuk mendapatkan CLSID DLL yang berisi kode ProxyStub yang akan dimuat. Untuk mendapatkan ClSID ProxyStub untuk antarmuka yang ada, kode memanggil fungsi CoGetPSClsid .
Namun, dalam beberapa kasus, mungkin diinginkan atau diperlukan untuk handler dalam proses atau server dalam proses untuk membuat antarmuka kustomnya tersedia tanpa menulis ke registri. DLL yang diunduh di seluruh jaringan bahkan mungkin tidak memiliki izin untuk mengakses registri lokal, dan karena kode berasal dari komputer lain, pengguna, untuk tujuan keamanan, mungkin ingin menjalankannya di lingkungan terbatas. Atau DLL mungkin memiliki antarmuka kustom yang digunakannya untuk berbicara dengan server jarak jauh dan juga dapat menyertakan kode ProxyStub untuk antarmuka tersebut. Dalam kasus seperti itu, DLL membutuhkan cara alternatif untuk mendaftarkan antarmukanya. CoRegisterPSClsid, yang digunakan bersama dengan CoRegisterClassObject, menyediakan alternatif tersebut.
Contoh
DLL biasanya akan memanggil CoRegisterPSClsid seperti yang ditunjukkan dalam fragmen kode berikut.
HRESULT RegisterMyCustomInterface(DWORD *pdwRegistrationKey)
{
HRESULT hr = CoRegisterClassObject(CLSID_MyProxyStubClsid,
pIPSFactoryBuffer,
CLSCTX_INPROC_SERVER,
REGCLS_MULTIPLEUSE
pdwRegistrationKey);
if(SUCCEEDED)(hr))
{
hr = CoRegisterPSClsid(IID_MyCustomInterface, CLSID_MyProxyStubClsid);
}
return hr;
}
Persyaratan
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) |
Pustaka | Ole32.lib |
DLL | Ole32.dll |