MonikerRelativePathTo  14DN.Z3

Provides a moniker that, when composed onto the end of the first specified moniker (or one with a similar structure), yields the second specified moniker. This function is intended for use only by IMoniker::RelativePathTo8ECMZ1 implementations.

WINOLEAPI MonikerRelativePathTo(

    LPMONIKER pmkSrc,

//Pointer to the source identified by the moniker

    LPMONIKER pmkDest,

//Pointer to the destination identified by the moniker

    LPMONIKER FAR * ppmkRelPath,

//Indirect pointer to the relative moniker

    BOOL dwReserved

//Reserved; must be non-zero

   );

 

 

Parameters

pmkSrc

[in] Pointer to the IMoniker interface on the moniker that, when composed with the relative moniker to be created, produces pmkDest. This moniker identifies the  source  of the relative moniker to be created.

pmkDest

[in] Pointer to the IMoniker interface on the moniker to be expressed relative to pmkSrc. This moniker identifies the destination of the relative moniker to be created.

ppmkRelPath

[out] Indirect pointer to an IMoniker interface on the new relative moniker. When successful, the function has called IUnknown::AddRef1SHW0SS on the parameter and the caller is responsible for calling IUnknown::ReleaseDUW01A. If an error occurs, the pointer value is NULL.

dwReserved

[in] Reserved; must be non-zero.

 

Return Values

This function supports the standard return value E_INVALIDARG, E_OUTOFMEMORY, and E_UNEXPECTED, as well as the following:

S_OK

A meaningful relative path has been returned.

MK_S_HIM

The only form of the relative path is the other moniker.

MK_E_NOTBINDABLE

Indicates that pmkSrc is a relative moniker, such as an item moniker, and must be composed with the moniker of its container before a relative path can be determined.

 

Remarks

Call MonikerRelativePathTo only in the implementation of IMoniker::RelativePathTo8ECMZ1 if you are implementing a new moniker class.

Your implementation of IMoniker::RelativePathTo should first check whether the other moniker is of a type you recognize and handle in a special way. If not, you should call MonikerRelativePathTo, passing itself as pmkThis and the other moniker as pmkOther. MonikerRelativePathTo correctly handles the cases where either moniker is a generic composite.

You should call this function only if pmkSrc and pmkDest are both absolute monikers, where an absolute moniker is either a file moniker or a generic composite whose leftmost component is a file moniker, and where the file moniker represents an absolute path. Do not call this function on relative monikers.

See Also

IMoniker::RelativePathTo