Método IMoniker::IsRunning (objidl.h)
Determina se o objeto identificado por esse moniker está atualmente carregado e em execução.
Sintaxe
HRESULT IsRunning(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] IMoniker *pmkNewlyRunning
);
Parâmetros
[in] pbc
Um ponteiro para a interface IBindCtx no contexto de associação a ser usado nesta operação de associação. O contexto de associação armazena em cache objetos associados durante o processo de associação, contém parâmetros que se aplicam a todas as operações usando o contexto de associação e fornece os meios pelos quais a implementação do moniker deve recuperar informações sobre seu ambiente.
[in] pmkToLeft
Um ponteiro para a interface IMoniker no moniker à esquerda deste moniker se esse moniker fizer parte de uma composição. Esse parâmetro é usado principalmente por implementadores de moniker para habilitar a cooperação entre os vários componentes de um moniker composto; Os clientes moniker geralmente podem passar NULL.
[in] pmkNewlyRunning
Um ponteiro para a interface IMoniker no moniker adicionado mais recentemente à ROT (tabela de objetos em execução). Isso pode ser NULL. Se não for NULL, a implementação poderá retornar os resultados da chamada de IMoniker::IsEqual no parâmetro pmkNewlyRunning , passando o moniker atual. Esse parâmetro destina-se a habilitar implementações IsRunning mais eficientes do que apenas pesquisar a ROT, mas a implementação pode optar por ignorar pmkNewlyRunning sem causar nenhum dano.
Retornar valor
Esse método pode retornar os valores de retorno padrão E_UNEXPECTED, bem como os valores a seguir.
Código de retorno | Descrição |
---|---|
|
O moniker está em execução. |
|
O moniker não está em execução. |
Comentários
Anotações para chamadores
Se a velocidade for importante quando você estiver solicitando serviços do objeto identificado pelo moniker, talvez você queira esses serviços somente se o objeto já estiver em execução (porque carregar um objeto no estado em execução pode ser demorado). Nessa situação, você deve chamar IsRunning para determinar se o objeto está em execução.Para os monikers armazenados em objetos vinculados, IsRunning é chamado principalmente pela implementação do manipulador padrão de IOleLink::BindIfRunning.
Anotações aos implementadores
Para obter um ponteiro para o ROT, sua implementação deve chamar IBindCtx::GetRunningObjectTable no parâmetro pbc . Sua implementação pode chamar IRunningObjectTable::IsRunning para determinar se o objeto identificado pelo moniker está em execução. O objeto identificado pelo moniker deve ter se registrado com o ROT quando começou a ser executado.Notas específicas da implementação
Implementação | Observações |
---|---|
Anti-moniker | Esse método verifica o ROT para ver se o objeto está em execução. |
Moniker de classe | Esse método retorna E_NOTIMPL. |
Moniker de arquivo | Se pmkNewlyRunning não for NULL, esse método retornará TRUE se esse moniker for igual a esse moniker. Caso contrário, o método pergunta ao ROT se esse moniker está em execução. O método ignora pmkToLeft. |
Moniker composto genérico |
Se pmkToLeft não for NULL, esse método comporá pmkToLeft com esse moniker e chamará IsRunning no resultado.
Se pmkToLeft for NULL, esse método retornará TRUE se pmkNewlyRunning não for NULL e for igual a esse moniker. Se pmkToLeft e pmkNewlyRunning forem NULL, esse método verificará a ROT para ver se o moniker está em execução. Nesse caso, o método retorna S_OK; caso contrário, ele chama IsRunning recursivamente no componente mais à direita da composição, passando o restante da composição como o parâmetro pmkToLeft para essa chamada. Isso manipula o caso em que o moniker identifica um pseudo-objeto que não está registrado como em execução; consulte a implementação do moniker de item para obter mais detalhes. |
Moniker de item |
Se pmkToLeft for NULL, esse método retornará TRUE se pmkNewlyRunning não for NULL e for igual a esse moniker. Caso contrário, o método verifica o ROT para ver se esse moniker está em execução.
Se pmkToLeft não for NULL, o método chamará IMoniker::BindToObject no parâmetro pmkToLeft , solicitando um ponteiro de interface IOleItemContainer . Em seguida, o método chama IOleItemContainer::IsRunning, passando a cadeia de caracteres contida nesse moniker. |
Moniker OBJREF | Como os monikers OBJREF representam uma instância de objeto em execução, esse método retorna TRUE , a menos que o objeto não esteja mais em execução porque uma chamada recente falhou. O método ignora pmkToLeft. |
Moniker de ponteiro | Esse método sempre retorna S_OK, pois o objeto identificado por um moniker de ponteiro sempre deve estar em execução. |
Moniker de URL | Retornará S_OK se esse moniker estiver em execução no momento. Caso contrário, ele retornará S_FALSE. O moniker de URL determina se ele está em execução primeiro verificando se ele é igual ao moniker recém-executado, fazendo a seguinte chamada: pmkNewlyRunning-IsEqual>. Normalmente, essa chamada é uma operação barata. Se isso não for bem-sucedido, o moniker verificará se ele está registrado com a ROT do contexto de associação passada. |
Requisitos
Requisito | Valor |
---|---|
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 | objidl.h |