Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Permite que un archivo DLL descargado registre sus interfaces personalizadas dentro de su proceso en ejecución para que el código de serialización pueda serializar esas interfaces.
Sintaxis
HRESULT CoRegisterPSClsid(
[in] REFIID riid,
[in] REFCLSID rclsid
);
Parámetros
[in] riid
Puntero al IID de la interfaz que se va a registrar.
[in] rclsid
Puntero al CLSID del archivo DLL que contiene el código proxy/código auxiliar de la interfaz personalizada especificada por riid.
Valor devuelto
Esta función puede devolver los valores devueltos estándar E_INVALIDARG, E_OUTOFMEMORY y S_OK.
Comentarios
Normalmente, el código responsable de serializar un puntero de interfaz en el proceso en ejecución actual lee la sección HKEY_CLASSES_ROOT\Interfaces del Registro para obtener el CLSID del archivo DLL que contiene el código ProxyStub que se va a cargar. Para obtener los CLSID de ProxyStub para una interfaz existente, el código llama a la función CoGetPSClsid .
Sin embargo, en algunos casos, puede ser deseable o necesario para que un controlador en proceso o un servidor en proceso haga que sus interfaces personalizadas estén disponibles sin necesidad de escribir en el registro. Es posible que un archivo DLL descargado a través de una red ni siquiera tenga permiso para acceder al registro local y, dado que el código se originó en otro equipo, el usuario, con fines de seguridad, puede querer ejecutarlo en un entorno restringido. O bien, un archivo DLL puede tener interfaces personalizadas que usa para comunicarse con un servidor remoto y también puede incluir el código ProxyStub para esas interfaces. En tales casos, un archivo DLL necesita una manera alternativa de registrar sus interfaces. CoRegisterPSClsid, que se usa junto con CoRegisterClassObject, proporciona esa alternativa.
Ejemplos
Normalmente, un archivo DLL llamaría a CoRegisterPSClsid , como se muestra en el siguiente fragmento de código.
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;
}
Requisitos
| Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
| Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
| Plataforma de destino | Windows |
| Encabezado | combaseapi.h (incluya Objbase.h) |
| Library | Ole32.lib |
| Archivo DLL | Ole32.dll |