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 |