Método IOleItemContainer::GetObject (oleidl.h)

Recupera un puntero al objeto especificado.

Sintaxis

HRESULT GetObject(
  [in]  LPOLESTR pszItem,
  [in]  DWORD    dwSpeedNeeded,
  [in]  IBindCtx *pbc,
  [in]  REFIID   riid,
  [out] void     **ppvObject
);

Parámetros

[in] pszItem

Nombre del contenedor para el objeto solicitado.

[in] dwSpeedNeeded

Indica aproximadamente cuánto tiempo esperará el autor de la llamada para obtener el objeto . Los valores posibles se toman de la enumeración BINDSPEED.

[in] pbc

Puntero a la interfaz IBindCtx del objeto de 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 de enlace debe recuperar información sobre su entorno.

[in] riid

Referencia al identificador del puntero de interfaz solicitado.

[out] ppvObject

Dirección de la variable de puntero que recibe el puntero de interfaz solicitado en riid. Tras la devolución correcta, *ppvObject contiene el puntero de interfaz solicitado al objeto denominado por pszItem. Cuando se ejecuta correctamente, la implementación debe llamar a AddRef en el *ppvObject; es responsabilidad del autor de la llamada llamar a Release. Si se produce un error, la implementación establece *ppvObject en NULL.

Valor devuelto

Este método puede devolver el valor devuelto estándar E_OUTOFMEMORY, así como los siguientes valores.

Código devuelto Descripción
S_OK
El método se completó correctamente.
MK_E_EXCEEDEDDEADLINE
No se pudo completar la operación de enlace dentro del límite de tiempo especificado por la estructura de BIND_OPTS del contexto de enlace o con la velocidad indicada por el parámetro dwSpeedNeeded .
MK_E_NOOBJECT
El parámetro pszItem no identifica un objeto en este contenedor.
E_NOINTERFACE
La interfaz solicitada no estaba disponible.

Comentarios

La implementación de moniker de elemento de IMoniker::BindToObject llama a este método, pasando el nombre almacenado en el moniker de elemento como parámetro pszItem .

Notas para los implementadores

La implementación de IOleItemContainer::GetObject debe determinar primero si pszItem es un nombre válido para uno de los objetos del contenedor. Si no es así, debe devolver MK_E_NOOBJECT.

Si pszItem asigna un nombre a un objeto incrustado o vinculado, la implementación debe comprobar el valor del parámetro dwSpeedNeeded . Si el valor es BINDSPEED_IMMEDIATE y el objeto aún no está cargado, debe devolver MK_E_EXCEEDEDDEADLINE. Si el objeto se carga, la implementación debe determinar si el objeto se está ejecutando (por ejemplo, llamando a la función OleIsRunning ). Si no se está ejecutando y el valor dwSpeedNeeded es BINDSPEED_MODERATE, la implementación debe devolver MK_E_EXCEEDEDDEADLINE. Si el objeto no se está ejecutando y dwSpeedNeeded es BINDSPEED_INDEFINITE, la implementación debe llamar a la función OleRun para colocar el objeto en estado de ejecución. A continuación, puede consultar el objeto para la interfaz solicitada. Tenga en cuenta que es importante que el objeto se ejecute antes de consultar la interfaz.

Si pszItem nombra un pseudoobjeto, la implementación puede omitir el parámetro dwSpeedNeeded porque se ejecuta un pseudoobjeto cada vez que se ejecuta su contenedor. En este caso, la implementación simplemente puede consultar la interfaz solicitada.

Si necesita información más específica sobre el límite de tiempo que da dwSpeedNeeded, puede llamar a IBindCtx::GetBindOptions en el parámetro pbc para obtener el parámetro de fecha límite real.

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 oleidl.h

Consulte también

IOleItemContainer