Funzione CoRegisterPSClsid (combaseapi.h)

Consente a una DLL scaricata di registrare le interfacce personalizzate all'interno del processo in esecuzione in modo che il codice di marshalling sia in grado di effettuare il marshalling di tali interfacce.

Sintassi

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

Parametri

[in] riid

Puntatore all'IID dell'interfaccia da registrare.

[in] rclsid

Puntatore al CLSID della DLL che contiene il codice proxy/stub per l'interfaccia personalizzata specificata da riid.

Valore restituito

Questa funzione può restituire i valori restituiti standard E_INVALIDARG, E_OUTOFMEMORY e S_OK.

Commenti

In genere, il codice responsabile del marshalling di un puntatore di interfaccia nel processo in esecuzione corrente legge la sezione HKEY_CLASSES_ROOT\Interfaces del Registro di sistema per ottenere il CLSID della DLL contenente il codice ProxyStub da caricare. Per ottenere i CLSID ProxyStub per un'interfaccia esistente, il codice chiama la funzione CoGetPSClsid .

In alcuni casi, tuttavia, può essere opportuno o necessario per un gestore in-process o un server in-process per rendere disponibili le interfacce personalizzate senza scrivere nel Registro di sistema. Una DLL scaricata in una rete potrebbe anche non avere l'autorizzazione per accedere al Registro di sistema locale e, poiché il codice è stato originato in un altro computer, l'utente, per motivi di sicurezza, potrebbe voler eseguirlo in un ambiente con restrizioni. In alternativa, una DLL può avere interfacce personalizzate che usa per comunicare con un server remoto e può includere anche il codice ProxyStub per tali interfacce. In questi casi, una DLL richiede un modo alternativo per registrare le relative interfacce. CoRegisterPSClsid, usato insieme a CoRegisterClassObject, fornisce tale alternativa.

Esempio

Una DLL in genere chiamerebbe CoRegisterPSClsid come illustrato nel frammento di codice seguente.

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

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione combaseapi.h (include Objbase.h)
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

CoGetPSClsid

CoRegisterClassObject