IMoniker::CommonPrefixWith
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
|
);
|
|
Parameters
pmkOther
[in] Points to the moniker to be compared with this one for a common prefix.
ppmkPrefix
[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
S_OK
A common prefix exists that is neither this moniker nor
pmkOther.
MK_S_NOPREFIX
No common prefix exists.
MK_S_HIM
The entire
pmkOther moniker is a prefix of this moniker.
MK_S_US
The two monikers are identical.
MK_S_ME
This moniker is a prefix of the
pmkOther moniker.
MK_E_NOTBINDABLE
This method was called on a relative moniker. It is not meaningful to take the
common prefix on a relative moniker.
E_OUTOFMEMORY
Indicates insufficient memory.
Comments
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
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database