Creates a new moniker based on the common prefix that this moniker shares with the specified moniker.

HRESULT CommonPrefixWith(

IMoniker *pmkOther,
//Moniker to be used for comparison
IMoniker **ppmkPrefix
//Receives the prefix



[in] Points to the moniker to be compared with this one for a common prefix.


[out] Receives a pointer to the moniker that is the common prefix of the this moniker and pmkOther. If an error occurs or if there is no common prefix, the implementation sets *ppmkPrefix to NULL. If *ppmkPrefix is non-NULL, the implementation must call IUnknown::AddRef on the parameter; it is the caller's responsibility to call IUnknown::Release.

Return Values


A common prefix exists that is neither this moniker nor pmkOther.


No common prefix exists.


The entire pmkOther moniker is a prefix of this moniker.


The two monikers are identical.


This moniker is a prefix of the pmkOther moniker.


This method was called on a relative moniker. It is not meaningful to take the common prefix on a relative moniker.


Indicates insufficient memory.


If, for example, you have one moniker that represents the path "c:\projects\secret\art\pict1.bmp" and another moniker that represents the path "c:\projects\secret\docs\chap1.txt." In that case, the common prefix of these two monikers would be a moniker representing the path "c:\projects\secret."

Notes to Callers

The IMoniker::CommonPrefixWith method is primarily called by the implementation of the IMoniker::RelativePathTo method. Moniker clients rarely need to call this method.

Note that it is not meaningful to take the common prefix on relative monikers. Consequently, you should call this method only if pmkOther and this moniker are both absolute monikers (where an absolute moniker is either a file moniker or a generic composite whose left-most component is a file moniker, and where the file moniker represents an absolute path). Do not call this method on relative monikers.

Notes to Implementors

Your implementation should first determine whether pmkOther is a moniker of a class that you recognize and for which you can provide special handling (for example, if it is of the same class as this moniker). If so, your implementation should determine the common prefix of the two monikers. Otherwise, it should pass both monikers in a call to the MonikerCommonPrefixWith API function, which correctly handles the generic case.

See Also

IMoniker::RelativePathTo, MonikerCommonPrefixWith

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database