Partager via


CoRegisterPSClsid, fonction (combaseapi.h)

Permet à une DLL téléchargée d’inscrire ses interfaces personnalisées dans son processus en cours d’exécution afin que le code de marshaling puisse marshaler ces interfaces.

Syntaxe

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

Paramètres

[in] riid

Pointeur vers l’IID de l’interface à inscrire.

[in] rclsid

Pointeur vers le CLSID de la DLL qui contient le code proxy/stub pour l’interface personnalisée spécifiée par riid.

Valeur retournée

Cette fonction peut retourner les valeurs de retour standard E_INVALIDARG, E_OUTOFMEMORY et S_OK.

Remarques

En règle générale, le code responsable du marshaling d’un pointeur d’interface dans le processus en cours d’exécution lit la section HKEY_CLASSES_ROOT\Interfaces du Registre pour obtenir le CLSID de la DLL contenant le code ProxyStub à charger. Pour obtenir les CLSID ProxyStub pour une interface existante, le code appelle la fonction CoGetPSClsid .

Dans certains cas, toutefois, il peut être souhaitable ou nécessaire qu’un gestionnaire in-process ou un serveur in-process rendent ses interfaces personnalisées disponibles sans écrire dans le Registre. Une DLL téléchargée sur un réseau peut même ne pas avoir l’autorisation d’accéder au registre local, et comme le code provient d’un autre ordinateur, l’utilisateur, pour des raisons de sécurité, peut vouloir l’exécuter dans un environnement restreint. Ou une DLL peut avoir des interfaces personnalisées qu’elle utilise pour communiquer avec un serveur distant et peut également inclure le code ProxyStub pour ces interfaces. Dans ce cas, une DLL a besoin d’un autre moyen d’inscrire ses interfaces. CoRegisterPSClsid, utilisé conjointement avec CoRegisterClassObject, fournit cette alternative.

Exemples

Une DLL appelle généralement CoRegisterPSClsid comme indiqué dans le fragment de code suivant.

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

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

CoGetPSClsid

CoRegisterClassObject