Метод 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, а также следующие значения.

Код возврата Описание
S_OK
Моникер работает.
S_FALSE
Моникер не работает.

Комментарии

Примечания к вызывающим абонентам

Если при запросе служб из объекта, определенного моникером, важна скорость, эти службы могут потребоваться только в том случае, если объект уже запущен (так как загрузка объекта в запущенное состояние может занять много времени). В такой ситуации следует вызвать Метод 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

См. также раздел

IMoniker

IOleLink::BindIfRunning

IRunningObjectTable::IsRunning