Home   Index   About
Ultimate Pack


Custom Search
IMoniker::BindToStorage

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.

HRESULT BindToStorage(

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
);

Parameters

pbc

[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.

pmkToLeft

[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.

riid

[in] Indicates the requested interface pointer to be returned in ppvObj. Common interfaces requested include IStorage, IStream, and ILockBytes.

ppvObj

[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.

Return Values

S_OK

The binding operation was successful.

MK_E_NOSTORAGE

Indicates that the object identified by this moniker does not have its own storage.

MK_E_EXCEEDEDDEADLINE

Indicates that the operation could not be completed within the time limit specified by the bind context's BIND_OPTS structure.

MK_E_CONNECTMANUALLY

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.

MK_E_INTERMEDIATEINTERFACENOTSUPPORTED

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 interface.

E_OUTOFMEMORY

Indicates insufficient memory.

STG_E_ACCESSDENIED

Unable to access the storage object.

IOleItemContainer::GetObject errors

Binding to a moniker containing an item moniker can return any of the errors associated with this function.

Comments

There is an important difference between the IMoniker::BindToObject and IMoniker::BindToStorage 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 operation).

See Also

IMoniker::BindToObject


Last news from Greatis Software

Nostalgia .Net     Nostalgia .Net     .Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes.  More »

Recommended software for developers

Ultimate Pack for Delphi and C++ Builder     Ultimate Pack     Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price.  More »

Form Designer .Net     Form Designer .Net     Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro!  More »

Print Suite .Net     Print Suite .Net     Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available  More »

Gradient Controls .Net     Gradient Controls .Net     Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available  More »

iGrid     Greatis iGrid     iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors.  More »


All the contacts and projects

Dmitry Vasiliev (just.dmitry)

Related Links

Software for Visual Studio .NET developers
Software for Delphi and C++ Builder developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Programmer's Reference
Win32 Multimedia Programmer's Reference
OLE Programmer's Reference
Microsoft Windows Pen API Programmer's Reference
Microsoft Windows Sockets 2 Reference
Microsoft Windows Telephony API (TAPI) Programmer's Reference
Unix Manual Pages

Free Tech Secrets ;) Copyright © 2008-2012 Free Tech Secrets ;) greatis just4fun network just4fun