Compartilhar via


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

CoGetPSClsid

Coregisterclassobject