Compartilhar via


IBindCtx::RegisterObjectParam

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Este método armazena um IUnknown ponteiro sobre o objeto especificado sob a chave especificada no seqüência de caracteres do contexto de BIND-de chave tabela de ponteiros. O método deve chamar o IUnknown::AddRef método sobre o ponteiro armazenado.

O IBindCtx::RegisterObjectParam método é com suporte DCOM, mas ele não é com suporte em COM.

Chamar esse método em COM retorna um valor de E_NOTIMPL.

Syntax

HRESULT RegisterObjectParam(
  LPOLESTR pszKey,
  IUnknown* punk
);

Parameters

  • pszKey
    [in] Pointer to a zero-terminated wide character string (two bytes per character) containing the key under which the object is being registered. Chave comparação de seqüência de caracteres é com diferenciação de maiúsculas e minúsculas.
  • punk
    [no] Ponteiro para o IUnknown interface sobre o objeto que deve ser registrado.

Return Value

A seguinte tabela mostra os valores de retorno para este método.

Valor Descrição

E_OUTOFMEMORY

Um padrão valor de retorno.

S_OK

O ponteiro foi registrado com êxito sob a seqüência de caracteres especificado.

Remarks

Um contexto BIND mantém uma tabela de interface ponteiros, cada associado com uma chave seqüência de caracteres. Isso permite a comunicação entre uma implementação moniker e o chamador que iniciou a operação ligação. Uma parte pode armazenar um ponteiro interface em um seqüência de caracteres conhecidos por ambas as partes so that a outra parte pode posteriormente recuperar de contexto de BIND.

Vincular as operações logo após o uso desse método pode usar o IBindCtx::GetObjectParam método para recuperar o ponteiro armazenado.

Para determinar se a plataforma oferece suporte a esta interface, consulte Determinando suporte COM APIs.

Notas para chamadores

IBindCtx::RegisterObjectParam é útil para aqueles implementando uma nova classe moniker (através de uma implementação IMoniker) e para clientes moniker (aqueles que usam identificadores de origem para BIND a Objetos).

Na implementação uma nova classe moniker, você chamar esse método quando ocorre um erro durante ligação moniker para informar o chamador da causar do erro. A chave que você poderia obter com um chamar para esse método depende de como a condição de erro. A seguir, há uma lista de comum moniker ligação erros, cada descrevendo as chaves que seriam apropriado:

  • MK_E_EXCEEDEDDEADLINE. Se uma operação ligação excede prazo porque não é um objeto determinado execução, você deve registrar moniker do objeto usando o primeiro não usado chave a partir de lista: ExceededDeadline, ExceededDeadline1, ExceededDeadline2 e assim por diante.
    Se o chamador posteriormente encontrar o moniker na tabela de objetos em execução, o chamador pode repetir a operação ligação.
  • MK_E_CONNECTMANUALLY. A chave ConnectManually indica um moniker cuja ligação requer assistência a partir de usuário final.
    A solicitação que conectar manualmente o usuário para o objeto, o chamador pode repetir a operação ligação após mostrando exibir nome do moniker. Motivos comuns para esse erro são que uma senha é necessária ou que um disquete precisa ser montado.
  • E_CLASSNOTFOUND. A chave ClassNotFound indica um moniker cujo classe não pôde ser encontrado. (O servidor para o objeto identificado por este moniker não pôde ser localizado.)
    Se essa chave é usada para um OLE composto-objeto documento, o chamador pode usar o IMoniker::BindToStorage método para BIND ao objeto e, em seguida, tentar realizar uma TREAT As ou converter para... operação para associar o objeto com um servidor diferente. Se esta for bem-sucedido, o chamador pode repetir a operação ligação.

Se você for um cliente moniker com conhecimento detalhado da implementação do moniker você estiver usando, você poderá também chamar este método para transmitir informações particulares para essa implementação.

Você pode definir novas seqüências de caracteres como chaves para armazenar ponteiros. Por convenção, você deve usar chave nomes que começam com a forma seqüência de caracteres da CLSID da classe moniker. (Consulte a StringFromCLSID função.)

Se a pasta pszKey parâmetro corresponda ao nome de uma chave existente na tabela do contexto de BIND, o novo objeto substitui o objeto existente na tabela.

Quando você registrar um objeto usando esse método, o objeto não é liberado até um do seguinte ocorre:

  • Ele será substituído na tabela pelo outro objeto com a mesma chave.
  • Ele é removido da tabela por um chamar para o IBindCtx::RevokeObjectParam método.
  • O contexto BIND é lançado. Todos os objetos registrados são liberados quando o contexto BIND é liberado.

Requirements

Header objidl.h, objidl.idl
Library ole32.lib, uuid.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

StringFromCLSID
IMoniker
IUnknown
IBindCtx::GetObjectParam
IBindCtx::RevokeObjectParam
IBindCtx::EnumObjectParam
IMoniker::BindToStorage
IUnknown::AddRef