SHGetSpecialFolderLocation

This function retrieves the location of a special folder, such as My Handheld PC, Recycle Bin, Control Panel, Desktop, Printers, Fonts, or various file system directories.

At a Glance

Header file: Shellapi.h (Shlobj.h for Palm-size PC and HPC)
Windows CE versions: 2.0 only

Syntax

WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation
( HWND
hwndOwner, int nFolder, LPITEMIDLIST *ppidl );

Parameters

hwndOwner

[in] Handle to the owner window the client should specify if it displays a dialog box or message box.

nFolder

[in] Value specifying the folder for which to retrieve the location. It is one of the following values:

Value Description
CSIDL_ALTSTARTUP File system directory that corresponds to the user's nonlocalized Startup program group.
CSIDL_APPDATA File system directory that serves as a common repository for application-specific data.
CSIDL_BITBUCKET File system directory that contains file objects in the user's Recycle Bin. The location of this directory is not in the registry; it is marked with the hidden and system attributes to prevent the user from moving or deleting it.
CSIDL_COMMON_ALTSTARTUP File system directory that corresponds to the nonlocalized Startup program group for all users.
CSIDL_COMMON_DESKTOPDIRECTORY File system directory that contains files and folders that appear on the desktop for all users.
CSIDL_COMMON_FAVORITES File system directory that serves as a common repository for all users' favorite items.
CSIDL_COMMON_PROGRAMS File system directory that contains the directories for the common program groups that appear on the Start menu for all users.
CSIDL_COMMON_STARTMENU File system directory that contains the programs and folders that appear on the Start menu for all users.
CSIDL_COMMON_STARTUP File system directory that contains the programs that appear in the Startup folder for all users.
CSIDL_CONTROLS Virtual folder containing icons for the Control Panel applications.
CSIDL_COOKIES File system directory that serves as a common repository for Internet cookies.
CSIDL_DESKTOP Windows Desktop, which is a virtual folder at the root of the namespace.
CSIDL_DESKTOPDIRECTORY File system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself).
CSIDL_DRIVES My Computer, which is a virtual folder that contains everything on the local computer: storage devices, printers, and Control Panel. The folder may also contain mapped network drives.
CSIDL_FAVORITES File system directory that serves as a common repository for the user's favorite items.
CSIDL_FONTS Virtual folder containing fonts.
CSIDL_HISTORY File system directory that serves as a common repository for Internet history items.
CSIDL_INTERNET Virtual folder representing the Internet.
CSIDL_INTERNET_CACHE File system directory that serves as a common repository for temporary Internet files.
CSIDL_NETHOOD File system directory containing objects that appear in the network neighborhood.
CSIDL_NETWORK Network Neighborhood Folder, which is a virtual folder that represents the top level of the network hierarchy.
CSIDL_PERSONAL File system directory that serves as a common repository for documents.
CSIDL_PRINTERS Virtual folder containing installed printers.
CSIDL_PRINTHOOD File system directory that serves as a common repository for printer links.
CSIDL_PROGRAMS File system directory that contains the user's program groups (which are also file system directories).
CSIDL_RECENT File system directory that contains the user's most recently used documents.
CSIDL_SENDTO File system directory that contains Send To menu items.
CSIDL_STARTMENU File system directory containing Start menu items.
CSIDL_STARTUP File system directory that corresponds to the user's Startup program group. The system starts these programs whenever any user logs onto Windows NT or starts Windows 95.
CSIDL_TEMPLATES File system directory that serves as a common repository for document templates.

ppidl

[in] Pointer to a pointer to an item identifier list specifying the folder’s location relative to the root of the namespace (the desktop). The calling application is responsible for freeing this pointer with the shell's IMalloc interface (see SHGetMalloc).

Return Values

NOERROR indicates success. An OLE-defined error result indicates failure.