Метод IOleItemContainer::GetObject (oleidl.h)
Извлекает указатель на указанный объект.
Синтаксис
HRESULT GetObject(
[in] LPOLESTR pszItem,
[in] DWORD dwSpeedNeeded,
[in] IBindCtx *pbc,
[in] REFIID riid,
[out] void **ppvObject
);
Параметры
[in] pszItem
Имя контейнера для запрошенного объекта.
[in] dwSpeedNeeded
Указывает, как долго вызывающий объект будет ожидать получения объекта. Возможные значения взяты из перечисления BINDSPEED.
[in] pbc
Указатель на интерфейс IBindCtx объекта контекста привязки, который будет использоваться в этой операции привязки. Контекст привязки кэширует объекты, привязанные к процессу привязки, содержит параметры, которые применяются ко всем операциям, использующим контекст привязки, и предоставляет средства, с помощью которых реализация привязки должна получать сведения о своей среде.
[in] riid
Ссылка на идентификатор запрошенного указателя интерфейса.
[out] ppvObject
Адрес переменной указателя, которая получает указатель интерфейса, запрошенный в riid. После успешного возврата *ppvObject содержит запрошенный указатель интерфейса на объект с именем pszItem. При успешном выполнении реализация должна вызвать AddRef для *ppvObject; вызов Release лежит на вызывающем объекте. При возникновении ошибки реализация присваивает *ppvObjectзначение NULL.
Возвращаемое значение
Этот метод может возвращать стандартное возвращаемое значение E_OUTOFMEMORY, а также следующие значения.
Код возврата | Описание |
---|---|
|
Метод завершился успешно. |
|
Операция привязки не может быть завершена в течение времени, заданного структурой BIND_OPTS контекста привязки, или со скоростью, указанной параметром dwSpeedNeeded . |
|
Параметр pszItem не определяет объект в этом контейнере. |
|
Запрошенный интерфейс был недоступен. |
Комментарии
Реализация моникера элемента IMoniker::BindToObject вызывает этот метод, передавая имя, хранящееся в моникере элемента, в качестве параметра pszItem .
Примечания для разработчиков
Реализация IOleItemContainer::GetObject должна сначала определить, является ли pszItem допустимым именем для одного из объектов контейнера. В противном случае необходимо вернуть MK_E_NOOBJECT.Если pszItem называет внедренный или связанный объект, реализация должна проверка значение параметра dwSpeedNeeded. Если значение BINDSPEED_IMMEDIATE, а объект еще не загружен, необходимо вернуть MK_E_EXCEEDEDDEADLINE. Если объект загружен, реализация должна определить, выполняется ли объект (например, путем вызова функции OleIsRunning ). Если он не выполняется и значение dwSpeedNeeded равно BINDSPEED_MODERATE, реализация должна возвращать MK_E_EXCEEDEDDEADLINE. Если объект не запущен и dwSpeedNeeded BINDSPEED_INDEFINITE, реализация должна вызвать функцию OleRun , чтобы поместить объект в состояние выполнения. Затем он может запросить объект для запрошенного интерфейса. Обратите внимание, что важно, чтобы объект был запущен перед запросом интерфейса.
Если pszItem называет псевдо-объект, реализация может игнорировать параметр dwSpeedNeeded, так как псевдо-объект выполняется при каждом запуске контейнера. В этом случае реализация может просто запросить запрошенный интерфейс.
Если вам нужны более конкретные сведения об ограничении времени, чем предоставляет dwSpeedNeeded, можно вызвать IBindCtx::GetBindOptions в параметре pbc , чтобы получить фактический параметр deadline.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | oleidl.h |