Метод IMoniker::IsRunning (objidl.h)
Определяет, загружается ли и выполняется ли объект, определенный этим моникером.
Синтаксис
HRESULT IsRunning(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] IMoniker *pmkNewlyRunning
);
Параметры
[in] pbc
Указатель на интерфейс IBindCtx в контексте привязки, который будет использоваться в этой операции привязки. Контекст привязки кэширует объекты, привязанные к процессу привязки, содержит параметры, которые применяются ко всем операциям, использующим контекст привязки, и предоставляет средства, с помощью которых реализация моникера должна извлекать сведения о своей среде.
[in] pmkToLeft
Указатель на интерфейс IMoniker в моникере слева от этого моникера, если этот моникер является частью составного. Этот параметр используется главным образом средствами реализации моникеров для обеспечения взаимодействия между различными компонентами составного моникера; клиенты моникера обычно могут передавать значение NULL.
[in] pmkNewlyRunning
Указатель на интерфейс IMoniker в моникере, который последний раз добавлен в таблицу выполняющихся объектов (ROT). Может иметь значение NULL. Если значение не равно NULL, реализация может возвращать результаты вызова IMoniker::IsEqual в параметре pmkNewlyRunning , передавая текущий моникер. Этот параметр предназначен для включения реализаций IsRunning , которые являются более эффективными, чем просто поиск в ROT, но реализация может игнорировать pmkNewlyRunning , не причиняя никакого вреда.
Возвращаемое значение
Этот метод может возвращать стандартные возвращаемые значения E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Моникер работает. |
|
Моникер не работает. |
Комментарии
Примечания к вызывающим абонентам
Если при запросе служб из объекта, определенного моникером, важна скорость, эти службы могут потребоваться только в том случае, если объект уже запущен (так как загрузка объекта в запущенное состояние может занять много времени). В такой ситуации следует вызвать Метод IsRunning , чтобы определить, выполняется ли объект.Для моникеров, хранящихся в связанных объектах, IsRunning в основном вызывается реализацией обработчика по умолчанию IOleLink::BindIfRunning.
Примечания для разработчиков
Чтобы получить указатель на ROT, реализация должна вызвать IBindCtx::GetRunningObjectTable в параметре pbc . Затем реализация может вызвать метод IRunningObjectTable::IsRunning , чтобы определить, запущен ли объект, определенный моникером. Объект, идентифицируемый моникером, должен быть зарегистрирован с помощью ROT при первом запуске.Примечания, относящиеся к реализации
Реализация | Примечания |
---|---|
Антимникер | Этот метод проверяет rot, чтобы проверить, выполняется ли объект . |
Моникер класса | Этот метод возвращает E_NOTIMPL. |
Моникер файла | Если значение pmkNewlyRunning не равно NULL, этот метод возвращает значение TRUE , если этот моникер равен этому моникеру. В противном случае метод запрашивает у ОБЪЕКТА ROT, выполняется ли этот моникер. Метод игнорирует pmkToLeft. |
Универсальный составной моникер |
Если значение pmkToLeft не равно NULL, этот метод компонует pmkToLeft с этим моникером и вызывает IsRunning в результате.
Если pmkToLeft имеет значение NULL, этот метод возвращает значение TRUE , если значение pmkNewlyRunning не равно NULL и равно этому моникеру. Если значения pmkToLeft и pmkNewlyRunning имеют значение NULL, этот метод проверяет, выполняется ли моникер. Если да, метод возвращает S_OK; В противном случае он рекурсивно вызывает IsRunning в крайнем правом компоненте составной части, передавая оставшуюся часть составной части в качестве параметра pmkToLeft для этого вызова. В этом случае моникер идентифицирует псевдо-объект, который не зарегистрирован как работающий; Дополнительные сведения см. в разделе Реализация моникера элемента. |
Моникер элемента |
Если pmkToLeft имеет значение NULL, этот метод возвращает значение TRUE , если значение pmkNewlyRunning не равно NULL и равно этому моникеру. В противном случае метод проверяет rot, чтобы проверить, запущен ли этот моникер.
Если значение pmkToLeft не равно NULL, метод вызывает IMoniker::BindToObject в параметре pmkToLeft , запрашивая указатель интерфейса IOleItemContainer . Затем метод вызывает IOleItemContainer::IsRunning, передавая строку, содержащуюся в этом моникере. |
Моникер OBJREF | Так как моникеры OBJREF представляют выполняющийся экземпляр объекта, этот метод возвращает значение TRUE , если известно, что объект больше не выполняется из-за сбоя последнего вызова. Метод игнорирует pmkToLeft. |
Моникер указателя | Этот метод всегда возвращает S_OK, так как объект, определяемый моникером указателя, всегда должен быть запущен. |
Моникер URL-адреса | Возвращает S_OK, если этот моникер запущен в данный момент. В противном случае возвращается S_FALSE. Моникер URL-адреса определяет, выполняется ли он, сначала проверив, равен ли он только что запущенному моникеру, выполнив следующий вызов: pmkNewlyRunning-IsEqual>. Как правило, этот вызов является недорогой операцией. Если это не удается, моникер проверяет, зарегистрирован ли он с помощью ROT переданного контекста привязки. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | objidl.h |