Bagikan melalui


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

Lihat juga

CoGetPSClsid

CoRegisterClassObject