typedef enum tagMKRREDUCE {
MKRREDUCE_ONE = 3<<16,
MKRREDUCE_TOUSER = 2<<16,
MKRREDUCE_THROUGUSER = 1<<16,
MKRREDUCE_ALL = 0
} MKRREDUCE;
These values have the following semantics.
Value | Description |
MKRREDUCE _ONE | Perform only one step of reduction on this moniker. In general, the caller will have to have specific knowledge as to the particular kind of moniker in question in order to be able to usefully take advantage of this option. |
MKRREDUCE _TOUSER | Reduce this moniker to the first point where it first is of the form where it represents something that the user conceptualizes as being the identity of a persistent object. For example, a file name would qualify, but a macro or an alias would not. If no such point exists, then this option should be treated as MKRREDUCE_ALL. |
MKRREDUCE _THROUGUSER | Reduce this moniker to the point where any further reduction would reduce it to a form which the user does not conceptualize as being the identity of a persistent object. Often, this is the same stage as MKRREDUCE_TOUSER. |
MKRREDUCE _ALL | Reduce the entire moniker, then, if needed reduce it again and again to the point where it reduces to simply itself. |
Argument | Type | Description |
pbc | IBindCtx* | The bind context to use in this operation. |
dwReduceHowFar | DWORD | Indicates to what degree this moniker should be reduced; see above. |
ppmkToLeft | IMoniker** | On entry, the moniker which is the prefix of this one in the composite in which it is found. On exit, the pointer is either NULL or non-NULL. Non-NULL indicates that what was previously thought of as the prefix should be disregarded and the moniker returned through ppmkToLeft considered the prefix in its place (this is very rare). NULL indicates that the prefix should not be so replaced. Thus, most monikers will NULL out this parameter before returning. |
ppmkReduced | IMoniker** | On exit, the reduced form of this moniker. Possibly NULL. |
return value | HRESULT | S_OK, MK_S_REDUCED_TO_SELF, MK_E_EXCEEDEDDEADLINE. |