Windows Mobile 6.5
A version of this page is also available for

This function creates and supplies a new anti-moniker.

WINOLEAPI CreateAntiMoniker(


[out] Address of IMoniker* pointer variable that receives the interface pointer to the new anti-moniker. When successful, the function has called IUnknown::AddRef on the anti-moniker and the caller is responsible for calling IUnknown::Release. When an error occurs, the anti-moniker pointer is NULL.

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


The anti-moniker has been created successfully.

Your application will call this function only when you are implementing your own moniker (IMoniker interface). If the new moniker class has no internal structure, it can use CreateAntiMoniker in the implementation of the IMoniker::Inverse method, and then check for an anti-moniker in the implementation of IMoniker::ComposeWith.

Like the ".." directory in MS-DOS file systems, which acts as the inverse to any directory name just preceding it in a path, an anti-moniker acts as the inverse of a simple moniker that precedes it in a composite moniker.

An anti-moniker is used as the inverse of simple monikers with no internal structure. For example, the system-provided implementations of file monikers, item monikers, and pointer monikers all use anti-monikers as their inverse; consequently, an anti-moniker composed to the right of one of these monikers composes to nothing.

A moniker client (an object that is using a moniker to bind to another object) typically does not know the class of a given moniker, so the client cannot be sure that an anti-moniker is the inverse. Therefore, to get the inverse of a moniker, the client will call IMoniker::Inverse rather than CreateAntiMoniker.

To remove the last piece of a composite moniker, the client will do the following:

  1. Call IMoniker::Enum on the composite, specifying FALSE as the first parameter. This creates an enumerator that returns the component monikers in reverse order.
  2. Use the enumerator to retrieve the last piece of the composite.
  3. Call IMoniker::Inverse on that moniker. The moniker returned by IMoniker::Inverse will remove the last piece of the composite.

To determine whether the platform supports this function, see Determining Supported COM APIs.

Windows Embedded CEWindows CE 3.0 and later
Windows MobileWindows Mobile Version 5.0 and later

Community Additions