Função CoRegisterPSClsid (combaseapi.h)
Permite que uma DLL baixada registre suas interfaces personalizadas em seu processo de execução para que o código de marshaling possa realizar marshaling dessas interfaces.
Sintaxe
HRESULT CoRegisterPSClsid(
[in] REFIID riid,
[in] REFCLSID rclsid
);
Parâmetros
[in] riid
Um ponteiro para o IID da interface a ser registrada.
[in] rclsid
Um ponteiro para o CLSID da DLL que contém o código proxy/stub para a interface personalizada especificada por riid.
Valor retornado
Essa função pode retornar os valores de retorno padrão E_INVALIDARG, E_OUTOFMEMORY e S_OK.
Comentários
Normalmente, o código responsável por realizar marshaling de um ponteiro de interface no processo em execução atual lê a seção HKEY_CLASSES_ROOT\Interfaces do registro para obter o CLSID da DLL que contém o código ProxyStub a ser carregado. Para obter os CLSIDs proxyStub para uma interface existente, o código chama a função CoGetPSClsid .
Em alguns casos, no entanto, pode ser desejável ou necessário que um manipulador em processo ou servidor em processo disponibilize suas interfaces personalizadas sem gravar no registro. Uma DLL baixada em uma rede pode nem mesmo ter permissão para acessar o registro local e, como o código se originou em outro computador, o usuário, para fins de segurança, pode querer executá-lo em um ambiente restrito. Ou uma DLL pode ter interfaces personalizadas que usa para conversar com um servidor remoto e também pode incluir o código ProxyStub para essas interfaces. Nesses casos, uma DLL precisa de uma maneira alternativa para registrar suas interfaces. CoRegisterPSClsid, usado em conjunto com CoRegisterClassObject, fornece essa alternativa.
Exemplos
Uma DLL normalmente chamaria CoRegisterPSClsid , conforme mostrado no fragmento de código a seguir.
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 com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | combaseapi.h (inclua Objbase.h) |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de