IOleItemContainer::GetObject
Returns a pointer to the object identified by the specified name.
HRESULT GetObject(
LPOLESTR pszItem,
| //Name of the object requested
|
DWORD dwSpeedNeeded,
| //Speed requirements on binding
|
IBindCtx *pbc,
| //Bind context to be used
|
REFIID riid,
| //IID of interface pointer desired
|
void **ppvObject
| //Receives interface pointer
|
);
|
|
Parameters
pszItem
[in] Points to a zero-terminated string containing the container's name for
the requested object. For Win32 applications, the
LPOLESTR type indicates a wide character string (two bytes per character); otherwise,
the string has one byte per character.
dwSpeedNeeded
[in] Indicates approximately how long the caller will wait to get the object.
The legal values for
dwSpeedNeeded are taken from the enumeration
BINDSPEED. For information on the
BINDSPEED enumeration, see the "Data Structures" section.
pbc
[in] Points to the bind context to be used in this binding operation. The bind
context caches objects bound during the binding process, contains parameters
that apply to all operations using the bind context, and provides the means by
which the binding implementation should retrieve information about its
environment. For more information, see
IBindCtx.
riid
[in] Specifies the type of interface pointer requested.
ppvObject
[out] Receives a pointer to the object named by
pszItem. If an error occurs, the implementation sets
*ppvObject to NULL. If *
ppvObject is non-NULL, the implementation must call
IUnknown::AddRef on the parameter; it is the caller's responsibility to call
IUnknown::Release.
Return Values
S_OK
The specified object was successfully returned.
MK_E_EXCEEDEDDEADLINE
The binding operation could not be completed within the time limit specified
by the bind context's
BIND_OPTS structure, or with the speed indicated by the
dwSpeedNeeded parameter.
MK_E_NOOBJECT
The parameter
pszItem does not identify a object in this container.
E_NOINTERFACE
The requested interface was not available.
E_OUTOFMEMORY
Insufficient memory.
Comments
The item moniker implementation of
IMoniker::BindToObject calls this method, passing the name stored within the item moniker as the
pszItem parameter.
Notes to Implementors
Your implementation of
IOleItemContainer::GetObject should first determine whether
pszItem is a valid name for one of the container's objects. If not, you should return
MK_E_NOOBJECT.
If
pszItem names an embedded or linked object, your implementation must check the value
of the
dwSpeedNeeded parameter. If the value is BINDSPEED_IMMEDIATE and the object is not yet
loaded, you should return MK_E_EXCEEDEDDEADLINE. If the object is loaded, your
implementation should determine whether the object is running (for example, by
calling the
OleIsRunning API function). If it is not running and the
dwSpeedNeeded value is BINDSPEED_MODERATE, your implementation should return
MK_E_EXCEEDEDDEADLINE. If the object is not running and
dwSpeedNeeded is BINDSPEED_INDEFINITE, your implementation should call the
OleRun API function to put the object in the running state. Then it can query the
object for the requested interface. Note that it is important the object be
running before you query for the interface.
If
pszItem names a pseudo-object, your implementation can ignore the
dwSpeedNeeded parameter because a pseudo-object is running whenever its container is
running. In this case, your implementation can simply query for the requested
interface.
If you want more specific information about the time limit than is given by
dwSpeedNeeded, you can call
IBindCtx::GetBindOptions on the
pbc parameter to get the actual deadline parameter.
See Also
IMoniker::BindToObject,
IBindCtx::GetBindOptions,
OleIsRunning,
OleRun
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database