共用方式為


CoRegisterPSClsid 函式 (combaseapi.h)

可讓下載的 DLL 在其執行中進程內註冊其自訂介面,讓封送處理常式代碼能夠封送處理這些介面。

語法

HRESULT CoRegisterPSClsid(
  [in] REFIID   riid,
  [in] REFCLSID rclsid
);

參數

[in] riid

要註冊之介面 IID 的指標。

[in] rclsid

DLL 之 CLSID 的指標,其中包含 riid所指定之自訂介面的 Proxy/Stub 程式碼。

傳回值

此函式可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY和S_OK。

備註

一般而言,負責將介面指標封送處理到目前執行中的進程的程式碼會讀取登錄 的HKEY_CLASSES_ROOT\Interfaces 區段,以取得要載入之 ProxyStub 程式碼之 DLL 的 CLSID。 若要取得現有介面的 ProxyStub CLSID,程式碼會呼叫 CoGetPSClsid 函式。

不過,在某些情況下,可能需要或必要的程式內處理常式或進程內伺服器,使其自訂介面可供使用,而不需寫入登錄。 透過網路下載的 DLL 甚至可能沒有存取本機登錄的許可權,而且因為程式碼源自另一部電腦,因此使用者基於安全性目的,可能會想要在受限制的環境中執行。 或者 DLL 可能有用來與遠端伺服器通訊的自訂介面,也可能包含這些介面的 ProxyStub 程式碼。 在這種情況下,DLL 需要替代方式來註冊其介面。 CoRegisterPSClsidCoRegisterClassObject搭配使用,可提供該替代方法。

範例

DLL 通常會呼叫 CoRegisterPSClsid ,如下列程式碼片段所示。

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

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 combaseapi.h (包含 Objbase.h)
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

CoGetPSClsid

CoRegisterClassObject