#ifndef _SHFOLDER_H
#define _SHFOLDER_H

/* Windows Shell special folder definitions */

#define SHFOLDERAPI  EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE

#ifndef CSIDL_PERSONAL
#define CSIDL_PERSONAL  0x0005
#endif

#ifndef CSIDL_APPDATA
#define CSIDL_APPDATA  0x001A
#endif

#ifndef CSIDL_LOCAL_APPDATA
#define CSIDL_LOCAL_APPDATA  0x001C
#define CSIDL_INTERNET_CACHE  0x0020
#define CSIDL_COOKIES  0x0021
#define CSIDL_HISTORY  0x0022
#define CSIDL_COMMON_APPDATA  0x0023
#define CSIDL_WINDOWS  0x0024
#define CSIDL_SYSTEM  0x0025
#define CSIDL_PROGRAM_FILES  0x0026
#define CSIDL_MYPICTURES  0x0027
#define CSIDL_PROGRAM_FILES_COMMON  0x002B
#define CSIDL_COMMON_DOCUMENTS  0x002E
#define CSIDL_FLAG_CREATE  0x8000
#define CSIDL_COMMON_ADMINTOOLS  0x002F
#define CSIDL_ADMINTOOLS  0x0030
#endif /* CSIDL_LOCAL_APPDATA */

typedef HRESULT (__stdcall *PFNSHGETFOLDERPATHA)(HWND,int,HANDLE,DWORD,LPSTR);
typedef HRESULT (__stdcall *PFNSHGETFOLDERPATHW)(HWND,int,HANDLE,DWORD,LPWSTR);

SHFOLDERAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
SHFOLDERAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);

#ifdef UNICODE
#define SHGetFolderPath SHGetFolderPathW
#define PFNSHGETFOLDERPATH PFNSHGETFOLDERPATHW
#else
#define SHGetFolderPath SHGetFolderPathA
#define PFNSHGETFOLDERPATH PFNSHGETFOLDERPATHA
#endif

#endif /* _SHFOLDER_H */
