Compartilhar via


Método IBindCtx::RegisterObjectBound (objidl.h)

Registra um objeto com o contexto de associação para garantir que o objeto permaneça ativo até que o contexto de associação seja liberado.

Sintaxe

HRESULT RegisterObjectBound(
  [in] IUnknown *punk
);

Parâmetros

[in] punk

Um ponteiro para a interface IUnknown no objeto que está sendo registrado como associado.

Retornar valor

Esse método pode retornar os valores retornados padrão E_OUTOFMEMORY e S_OK.

Comentários

Aqueles que escrevem uma nova classe moniker (por meio de uma implementação da interface IMoniker ) devem chamar esse método sempre que a implementação ativar um objeto. Isso acontece com mais frequência durante a associação de um moniker, mas também pode acontecer ao recuperar o nome de exibição de um moniker, analisar um nome de exibição em um moniker ou recuperar a hora em que um objeto foi modificado pela última vez.

RegisterObjectBound chama AddRef para criar uma referência adicional ao objeto . No entanto, você ainda deve liberar sua própria cópia do ponteiro. Chamar esse método duas vezes para o mesmo objeto cria duas referências a esse objeto. Você pode liberar uma referência obtida por meio de uma chamada para esse método chamando IBindCtx::RevokeObjectBound. Todas as referências mantidas pelo contexto de associação são liberadas quando o contexto de associação em si é liberado.

Chamar RegisterObjectBound para registrar um objeto com um contexto de associação mantém o objeto ativo até que o contexto de associação seja liberado. Reutilizar um contexto de associação em uma operação de associação subsequente (para outra parte do mesmo moniker composto ou para um moniker diferente) pode tornar a operação de associação subsequente mais eficiente porque não precisa recarregar esse objeto. Isso, no entanto, melhora o desempenho somente se a operação de associação subsequente exigir alguns dos mesmos objetos que o original, portanto, você precisará equilibrar a possível melhoria de desempenho de reutilização de um contexto de associação em relação aos custos de manter os objetos ativados desnecessariamente.

IBindCtx não fornece um método para recuperar um ponteiro para um objeto registrado usando RegisterObjectBound. Supondo que o objeto tenha se registrado com a tabela de objetos em execução, as implementações de moniker podem chamar IRunningObjectTable::GetObject para recuperar um ponteiro para o objeto.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Ibindctx

IRunningObjectTable::GetObject