Método IMoniker::IsRunning (objidl.h)
Determina si el objeto identificado por este moniker está cargado y en ejecución.
Sintaxis
HRESULT IsRunning(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] IMoniker *pmkNewlyRunning
);
Parámetros
[in] pbc
Puntero a la interfaz IBindCtx en el contexto de enlace que se va a usar en esta operación de enlace. El contexto de enlace almacena en caché los objetos enlazados durante el proceso de enlace, contiene parámetros que se aplican a todas las operaciones mediante el contexto de enlace y proporciona los medios por los que la implementación del moniker debe recuperar información sobre su entorno.
[in] pmkToLeft
Puntero a la interfaz IMoniker del moniker a la izquierda de este moniker si este moniker forma parte de un compuesto. Este parámetro se usa principalmente por los implementadores de moniker para permitir la cooperación entre los distintos componentes de un moniker compuesto; Normalmente, los clientes de moniker pueden pasar NULL.
[in] pmkNewlyRunning
Puntero a la interfaz IMoniker del moniker agregado más recientemente a la tabla de objetos en ejecución (ROT). Puede ser NULL. Si no es NULL, la implementación puede devolver los resultados de llamar a IMoniker::IsEqual en el parámetro pmkNewlyRunning , pasando el moniker actual. Este parámetro está pensado para habilitar implementaciones de IsRunning que son más eficaces que simplemente buscar en rot, pero la implementación puede optar por omitir pmkNewlyRunning sin causar ningún daño.
Valor devuelto
Este método puede devolver los valores devueltos estándar E_UNEXPECTED, así como los siguientes valores.
Código devuelto | Descripción |
---|---|
|
El moniker se está ejecutando. |
|
El moniker no se está ejecutando. |
Comentarios
Notas a los autores de llamadas
Si la velocidad es importante al solicitar servicios desde el objeto identificado por el moniker, es posible que desee que esos servicios solo estén en ejecución si el objeto ya se está ejecutando (porque cargar un objeto en el estado en ejecución puede llevar mucho tiempo). En esta situación, debe llamar a IsRunning para determinar si el objeto se está ejecutando.Para los monikers almacenados en objetos vinculados, IsRunning se llama principalmente por la implementación del controlador predeterminado de IOleLink::BindIfRunning.
Notas para los implementadores
Para obtener un puntero a ROT, la implementación debe llamar a IBindCtx::GetRunningObjectTable en el parámetro pbc . A continuación, la implementación puede llamar a IRunningObjectTable::IsRunning para determinar si el objeto identificado por el moniker se está ejecutando. El objeto identificado por el moniker debe haberse registrado en el ROT cuando comenzó a ejecutarse por primera vez.Notas específicas de la implementación
Implementación | Notas |
---|---|
Anti-moniker | Este método comprueba el ROT para ver si el objeto se está ejecutando. |
Moniker de clase | Este método devuelve E_NOTIMPL. |
Moniker de archivo | Si pmkNewlyRunning no es NULL, este método devuelve TRUE si ese moniker es igual a este moniker. De lo contrario, el método pregunta al ROT si se está ejecutando este moniker. El método omite pmkToLeft. |
Moniker compuesto genérico |
Si pmkToLeft no es NULL, este método compone pmkToLeft con este moniker y llama a IsRunning en el resultado.
Si pmkToLeft es NULL, este método devuelve TRUE si pmkNewlyRunning no es NULL y es igual a este moniker. Si pmkToLeft y pmkNewlyRunning son NULL, este método comprueba el ROT para ver si el moniker se está ejecutando. Si es así, el método devuelve S_OK; de lo contrario, llama recursivamente a IsRunning en el componente más a la derecha de la composición, pasando el resto del compuesto como el parámetro pmkToLeft para esa llamada. Esto controla el caso en el que el moniker identifica un pseudoobjeto que no está registrado como en ejecución; consulte la implementación del moniker de elemento para obtener más detalles. |
Moniker de elemento |
Si pmkToLeft es NULL, este método devuelve TRUE si pmkNewlyRunning no es NULL y es igual a este moniker. De lo contrario, el método comprueba el ROT para ver si se está ejecutando este moniker.
Si pmkToLeft no es NULL, el método llama a IMoniker::BindToObject en el parámetro pmkToLeft y solicita un puntero de interfaz IOleItemContainer . A continuación, el método llama a IOleItemContainer::IsRunning, pasando la cadena contenida en este moniker. |
OBJREF moniker | Dado que los monikers de OBJREF representan una instancia de objeto en ejecución, este método devuelve TRUE a menos que se sepa que el objeto ya no se está ejecutando porque se produjo un error en una llamada reciente. El método omite pmkToLeft. |
Moniker de puntero | Este método siempre devuelve S_OK, ya que el objeto identificado por un moniker de puntero siempre debe estar en ejecución. |
Moniker de dirección URL | Devuelve S_OK si este moniker se está ejecutando actualmente. De lo contrario, devuelve S_FALSE. El moniker de dirección URL determina si se está ejecutando primero comprobando si es igual al moniker recién en ejecución, realizando la siguiente llamada: pmkNewlyRunning-IsEqual>. Normalmente, esta llamada es una operación económica. Si esto no se realiza correctamente, el moniker siguiente comprueba si está registrado con el ROT del contexto de enlace pasado. |
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | objidl.h |