Retrieves an interface pointer to the storage of the object identified by the
moniker. Unlike the IMoniker::BindToObject
method, this method does not run the object identified by the moniker.
| IBindCtx *pbc,
||//Bind context to be used
| IMoniker *pmkToLeft,
||//Moniker to the left of this one in the composite
| REFIID riid,
||//IID of interface pointer requested
| void **ppvObj
||//Receives interface pointer to storage
[in] Points to the bind context to be used during 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 moniker implementation should retrieve information about its
environment. For more information, see IBindCtx
[in] Points to the moniker to the left of this moniker, if this moniker is
part of a composite. This parameter is primarily used by moniker implementors to
enable cooperation between the various components of a composite moniker;
moniker clients can usually pass NULL.
[in] Indicates the requested interface pointer to be returned in ppvObj
. Common interfaces requested include IStorage
, and ILockBytes
[out] Receives a pointer to the interface identified by riid
. If an error occurs, the implementation sets *ppvObj
to NULL. If *ppvObj
is non-NULL, the implementation must call IUnknown::AddRef
on the parameter; it is the caller's responsibility to call IUnknown::Release
The binding operation was successful.
Indicates that the object identified by this moniker does not have its own
Indicates that the operation could not be completed within the time limit
specified by the bind context's BIND_OPTS
Indicates that the operation was unable to connect to the storage, possibly
because a network device could not be connected to. For more information, see IMoniker::BindToObject
An intermediate object was found but it did not support an interface required
for an operation. For example, an item moniker returns this value if its
container does not support the IOleItemContainer
Indicates insufficient memory.
Unable to access the storage object.
Binding to a moniker containing an item moniker can return any of the errors
associated with this function.
There is an important difference between the IMoniker::BindToObject
methods. If, for example, you have a moniker that identifies a spreadsheet
object; calling IMoniker::BindToObject
provides access to the spreadsheet object itself, while calling IMoniker::BindToStorage
provides access to the storage object in which the spreadsheet resides.
Notes to Callers
The most common reason for calling the IMoniker::BindToStorage
method is if you are implementing your own moniker class. You would call this
method if your implementation of IMoniker::BindToObject
needs information from the object identified by their pmkToLeft
parameter, but it doesn't need to activate that object; all it needs is
access to the persistent storage of that object. For example, if your monikers are
used to identify objects that can be activated without activating their
containers, you may find this method useful. (Note that none of the system-supplied
moniker classes use this method in their binding operations.)
You could also call this method if you're a moniker client and you know how to
read the storage of the object identified by the moniker you're holding.
Notes to Implementors
Your implementation should locate the persistent storage for the object
identified by the current moniker and return the desired interface pointer. Some
types of monikers represent pseudo-objects; that is, objects that don't have their
own piece of persistent storage. Such objects comprise some portion of the
internal state of its container; e.g. a range of cells in a spreadsheet. If your
moniker class is this type of moniker, your implementation of IMoniker::BindToStorage
should return the error MK_E_NOSTORAGE.
If the bind context's BIND_OPTS
structure specifies the BINDFLAGS_JUSTTESTEXISTENCE
flag, your implementation has the option of returning NULL in *ppvObj
(although it can also ignore the flag and perform the complete binding
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages