IShellFolder interface (shobjidl_core.h)

Exposed by all Shell namespace folder objects, its methods are used to manage folders.


The IShellFolder interface inherits from the IUnknown interface. IShellFolder also has these types of members:


The IShellFolder interface has these methods.


Retrieves a handler, typically the Shell folder object that implements IShellFolder for a particular item. Optional parameters that control the construction of the handler are passed in the bind context.

Requests a pointer to an object's storage interface.

Determines the relative order of two file objects or folders, given their item identifier lists.

Requests an object that can be used to obtain information from or interact with a folder object.

Enables a client to determine the contents of a folder by creating an item identifier enumeration object and returning its IEnumIDList interface. The methods supported by that interface can then be used to enumerate the folder's contents.

Gets the attributes of one or more file or folder objects contained in the object represented by IShellFolder.

Retrieves the display name for the specified file object or subfolder.

Gets an object that can be used to carry out actions on the specified file objects or folders.

Translates the display name of a file object or a folder into an item identifier list.

Sets the display name of a file object or subfolder, changing the item identifier in the process.


Implement this interface for objects that extend the Shell's namespace. For example, implement this interface to create a separate namespace that requires a rooted Windows Explorer or to install a new namespace directly within the hierarchy of the system namespace. You are most familiar with the contents of your namespace, so you are responsible for implementing everything needed to access your data.

Use this interface when you need to display or perform an operation on the contents of the Shell's namespace. Objects that support IShellFolder are usually created by other Shell folder objects. To retrieve a folder's IShellFolder interface, you typically start by calling SHGetDesktopFolder. This function returns a pointer to the desktop's IShellFolder interface. You can then use its methods to retrieve an IShellFolder interface for a particular namespace folder.

Note  IShellFolder methods only accept PIDLs that are relative to the folder. Some IShellFolder methods, such as IShellFolder::GetAttributesOf, only accept single-level PIDLs. In other words, the PIDL must contain only a single SHITEMID structure, plus the terminating NULL. When you enumerate the contents of a folder with IEnumIDList, you will receive PIDLs of this form. Other methods, such as IShellFolder::CompareIDs, accept multi-level PIDLs. These PIDLs can have multiple SHITEMID structures and identify objects one or more levels below the parent folder. Check the reference to be sure what type of PIDL can be accepted by a particular method.


An example implementation of IShellFolder can be seen in the Explorer Data Provider Sample sample. The use of various IShellFolder methods can be found in several samples, including File Operations Sample.


Requirement Value
Minimum supported client Windows XP [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header shobjidl_core.h