Compartilhar via


IRunningObjectTable::Register

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Este método registra um objeto e seu moniker de identificação na Running Object Table (ROT).

Syntax

HRESULT Register(
  DWORD grfFlags,
  IUnknown* punkObject,
  IMoniker* pmkObjectName,
  DWORD* pdwRegister 
);

Parameters

  • grfFlags
    [no] Especifica se referência da ROT punkObject é de baixa segurança ou de alta segurança e controla acessar para o objeto a sua entrada na ROT. Para obter detalhes, consulte a seção " Comentários " abaixo.
  • punkObject
    [no] Ponteiro para o objeto que está sendo registrado como execução.
  • pmkObjectName
    [no] Ponteiro para o moniker que identifica punkObject.
  • pdwRegister
    [out] Ponteiro para uma 32-bit valor que pode ser usado para identificar este entrada ROT em chamadas subseqüentes para IRunningObjectTable::REVOKE Ou IRunningObjectTable::NoteChangeTime.

    O chamador não é possível especificar NULL para este parâmetro.

    Se ocorrer um erro *pdwRegister é definido como zero.

Return Value

Este método oferece suporte a padrão retornar valores E_INVALIDARG e E_OUTOFMEMORY, bem como o seguinte:

  • S_OK
    O objeto foi registrado com êxito.
  • MK_S_MONIKERALREADYREGISTERED
    O moniker/par objeto foi registrado com êxito, mas que outro objeto (possivelmente o mesmo objeto) já foi registrado com o mesmo moniker.

Remarks

Este método registra um ponteiro para um objeto em um moniker que identifica o objeto. O moniker é usado como a chave quando a tabela é pesquisada com IRunningObjectTable::GetObject.

O parâmetro grfFlags aceita dois configurações sinalizador:

  • ROTFLAGS_REGISTRATIONKEEPSALIVE. Quando definido, indica um registro de alta segurança para o objeto.
  • ROTFLAGS_ALLOWANYCLIENT. Quando definida, qualquer cliente pode conectar para a execução objeto através de sua entrada na ROT. Quando não definida, somente os clientes na estação de janela que registrou o objeto podem conectar a ele.

Quando um objeto é registrado, sempre chama o ROT AddRef Sobre o objeto.

Para um registro de baixa segurança será a ROT (ROTFLAGS_REGISTRATIONKEEPSALIVE não definido), versão o objeto sempre que a última referência forte para o objeto é liberada.

Para um registro de alta segurança (conjunto ROTFLAGS_REGISTRATIONKEEPSALIVE), o ROT impede o objeto de sendo destruído até que registro do objeto esteja explicitamente revogado.

Um servidor registrado como LocalService ou runas pode definir o sinalizador ROTFLAGS_ALLOWANYCLIENT em seu chamar para registrar para permitir que qualquer cliente para conectar a ele.

Uma configuração servidor que esse bit deve ter seu nome do arquivo executável na seção AppID de Registro que se refere ao AppID para o arquivo executável.

Um Activate como servidor ativador (não registrado como LocalService ou Runas) não deve definido esse sinalizador no seu chamar para registrar. Para obter detalhes sobre como instalar os serviços, consulte Instalando o como um serviço Win32 ou conta de usuário.

Registrando um segundo objeto com o mesmo moniker ou reregistering o mesmo objeto com o mesmo moniker, cria uma entrada segunda na ROT. Este maiúsculas e minúsculas, registrar retorna MK_S_MONIKERALREADYREGISTERED.

Cada chamar para registro deve ser correspondência com um chamar para IRunningObjectTable::REVOKE Porque duplicado até mesmo as entradas têm diferentes pdwRegister identificadores.

Um problema com duplicado é nenhuma maneira de determinar qual objeto será retornada se o moniker for especificado em um chamar subseqüente para que os registros não existe IRunningObjectTable::IsRunning.

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

Notas para chamadores

Se você for um provedor moniker (ou seja, você mão fora monikers identificando os objetos para torná-los acessível a outras pessoas), você deve chamar o método registrar para registrar seus objetos quando eles começarem execução. Você também deve chamar este método se você renomear os objetos enquanto eles estão carregados.

The most comum tipo de provedor moniker é um compostos-origem link documento. Isso inclui aplicativos servidor que suporte vinculação a seus documentos (ou partes de um documento) e aplicativos contêiner que suporte vinculação a embeddings dentro de seus documentos.

Aplicativos de servidor que não podem de vinculação não suporte também utilizar o ROT Para cooperar com aplicativos contêiner que suporte vinculação a embeddings.

Se você estiver escrevendo um aplicativo servidor, você deve registrar um objeto com o ROT quando ele for iniciada, geralmente em sua implementação de execução IOleObject.

O objeto deve ser registrado em seu moniker completo, que requer obtendo o moniker de seu documento contêiner usando IOleClientSite::GetMoniker. Você também deve revogar e registre novamente o objeto em sua implementação de IOleObject::SetMoniker, que é chamado se o documento contêiner é renomeado.

Se você estiver escrevendo um aplicativo contêiner que oferece suporte à vinculação a embeddings, você deve registrar seu documento com o ROT quando ele é carregado. Se o documento é renomeado, você deve revogar e registrá-lo com o ROT e chamar IOleObject::SetMoniker Para qualquer incorporado objetos de documento para dar-lhes uma oportunidade para registrar próprios.

Objetos registrados no ROT devem ser explicitamente revogado quando o objeto é no longer execução ou quando sua moniker for alterado. Esta revogação é importante porque não é possível para o sistema para entradas remover automaticamente a partir de ROT.

Você deve armazenar em cache o identificador que é escrito por meio pdwRegister e usá-lo em um chamar para IRunningObjectTable::REVOKE Para revogar o registro. Para um registro de alta segurança, uma referência de alta segurança é liberada quando registro do objeto for revogado.

Implementação do sistema de IRunningObjectTable::Register Chamadas IMoniker::Reduce no menu pmkObjectName parâmetro para garantir que o moniker totalmente é reduzida antes registro. Se um objeto é conhecido por um more than moniker reduzido totalmente, ela deve ser registrada em todos esses identificadores de origem.

Requirements

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

See Also

Reference

IMoniker::Reduce
IOleClientSite::GetMoniker
IOleObject::SetMoniker
IRunningObjectTable::IsRunning
IRunningObjectTable::Revoke