IEnumXXXX

To allow you to enumerate the number of items of a given type that an object maintains, OLE provides a set of enumeration interfaces, one for each type of item.

To use these interfaces, the client asks an object that maintains a collection of items to create an enumerator object. The interface on the enumeration object is one of the enumeration interfaces, all of which have a name of the form IEnumItem_name. The only difference between enumeration interfaces is what they enumerate — there must be a separate enumeration interface for each type of item enumerated. All have the same set of methods, and are used in the same way. For example, by repeatedly calling the Next method, the client gets successive pointers to each item in the collection.

The following table lists the set of enumeration interfaces that OLE defines, and the items enumerated.

Enumeration Interface Name Item Enumerated
IEnumFORMATETC An array of FORMATETC structures.
IEnumMoniker The components of a moniker, or the monikers in a table.
IEnumOLEVERB The different verbs available for an object, in order of ascending verb number.
IEnumSTATDATA An array of STATDATA structures which contain advisory connection information for a data object.
IEnumSTATSTG An array of STATSTG structures, which contain statistical information about a storage, stream, or LockBytes object
IEnumString Strings
IEnumUnknown Enumerates IUnknown interface pointers.
IEnumVARIANT A collection of variants. It allows clients to enumerate heterogeneous collections of objects and intrinsic types when the clients cannot or do not know the specific type(s) of elements in the collection.

Methods in Vtable Order

IUnknown Methods Description
QueryInterface Returns pointers to supported interfaces.
AddRef Increments reference count.
Release Decrements reference count.

IEnumXXXX Methods Description
Next Retrieves a specified number of items in the enumeration sequence.
Skip Skips over a specified number of items in the enumeration sequence.
Reset Resets the enumeration sequence to the beginning.
Clone Creates another enumerator that contains the same enumeration state as the current one.