ifndef __REQUIRED_RPCNDR_H_VERSION__
define __REQUIRED_RPCNDR_H_VERSION__ 500
endif
ifndef __REQUIRED_RPCSAL_H_VERSION__
define __REQUIRED_RPCSAL_H_VERSION__ 100
endif

include rpc.inc
include rpcndr.inc
ifndef __RPCNDR_H_VERSION__
.err <this stub requires an updated version of rpcndr.inc>
endif

ifndef __shtypes_h__
define __shtypes_h__

include wtypes.inc

.pragma pack(push, 1)

SHITEMID		STRUC
cb			USHORT ?
abID			db 1 dup(?)
SHITEMID		ENDS

ITEMIDLIST		STRUC
mkid			SHITEMID <>
ITEMIDLIST		ENDS

.pragma pack(pop)

LPSHITEMID		typedef ptr SHITEMID
LPCSHITEMID		typedef ptr SHITEMID
ITEMIDLIST_RELATIVE	typedef ITEMIDLIST
ITEMID_CHILD		typedef ITEMIDLIST
ITEMIDLIST_ABSOLUTE	typedef ITEMIDLIST

wirePIDL		typedef ptr BYTE_BLOB
LPITEMIDLIST		typedef ptr ITEMIDLIST
LPCITEMIDLIST		typedef ptr ITEMIDLIST

PIDLIST_ABSOLUTE	typedef ptr ITEMIDLIST_ABSOLUTE
PCIDLIST_ABSOLUTE	typedef ptr ITEMIDLIST_ABSOLUTE
PCUIDLIST_ABSOLUTE	typedef ptr ITEMIDLIST_ABSOLUTE
PIDLIST_RELATIVE	typedef ptr ITEMIDLIST_RELATIVE
PCIDLIST_RELATIVE	typedef ptr ITEMIDLIST_RELATIVE
PUIDLIST_RELATIVE	typedef ptr ITEMIDLIST_RELATIVE
PCUIDLIST_RELATIVE	typedef ptr ITEMIDLIST_RELATIVE
PITEMID_CHILD		typedef ptr ITEMID_CHILD
PCITEMID_CHILD		typedef ptr ITEMID_CHILD
PUITEMID_CHILD		typedef ptr ITEMID_CHILD
PCUITEMID_CHILD		typedef ptr ITEMID_CHILD

PCUITEMID_CHILD_ARRAY	 typedef ptr PCUITEMID_CHILD
PCUIDLIST_RELATIVE_ARRAY typedef ptr PCUIDLIST_RELATIVE
PCIDLIST_ABSOLUTE_ARRAY	 typedef ptr PCIDLIST_ABSOLUTE
PCUIDLIST_ABSOLUTE_ARRAY typedef ptr PCUIDLIST_ABSOLUTE

.enum STRRET_TYPE {
    STRRET_WSTR	  = 0,
    STRRET_OFFSET = 0x1,
    STRRET_CSTR	  = 0x2
    }

.pragma pack(push, 8)

STRRET			STRUC
uType			UINT ?
UNION
 pOleStr		LPWSTR ?
 uOffset		UINT ?
 cStr			sbyte 260 dup(?)
ENDS
STRRET			ENDS
LPSTRRET		typedef ptr STRRET

.pragma pack(pop)

.pragma pack(push, 1)

SHELLDETAILS		STRUC
fmt			SINT ?
cxChar			SINT ?
_str			STRRET <>
SHELLDETAILS		ENDS
LPSHELLDETAILS		typedef ptr SHELLDETAILS

.pragma pack(pop)

if (_WIN32_IE GE _WIN32_IE_IE60SP2)

.enum PERCEIVED {
    PERCEIVED_TYPE_FIRST	= -3,
    PERCEIVED_TYPE_CUSTOM	= -3,
    PERCEIVED_TYPE_UNSPECIFIED	= -2,
    PERCEIVED_TYPE_FOLDER	= -1,
    PERCEIVED_TYPE_UNKNOWN	= 0,
    PERCEIVED_TYPE_TEXT		= 1,
    PERCEIVED_TYPE_IMAGE	= 2,
    PERCEIVED_TYPE_AUDIO	= 3,
    PERCEIVED_TYPE_VIDEO	= 4,
    PERCEIVED_TYPE_COMPRESSED	= 5,
    PERCEIVED_TYPE_DOCUMENT	= 6,
    PERCEIVED_TYPE_SYSTEM	= 7,
    PERCEIVED_TYPE_APPLICATION	= 8,
    PERCEIVED_TYPE_GAMEMEDIA	= 9,
    PERCEIVED_TYPE_CONTACTS	= 10,
    PERCEIVED_TYPE_LAST		= 10
    }

PERCEIVEDFLAG_UNDEFINED equ 0x0000
PERCEIVEDFLAG_SOFTCODED equ 0x0001
PERCEIVEDFLAG_HARDCODED equ 0x0002
PERCEIVEDFLAG_NATIVESUPPORT equ 0x0004
PERCEIVEDFLAG_GDIPLUS	equ 0x0010
PERCEIVEDFLAG_WMSDK	equ 0x0020
PERCEIVEDFLAG_ZIPFOLDER equ 0x0040
PERCEIVEDFLAG		typedef DWORD

endif

if (NTDDI_VERSION GE NTDDI_VISTA)

COMDLG_FILTERSPEC	STRUC
pszName			LPCWSTR ?
pszSpec			LPCWSTR ?
COMDLG_FILTERSPEC	ENDS

endif

KNOWNFOLDERID		typedef GUID

REFKNOWNFOLDERID	typedef ptr KNOWNFOLDERID
KF_REDIRECT_FLAGS	typedef DWORD
FOLDERTYPEID		typedef GUID
REFFOLDERTYPEID		typedef ptr FOLDERTYPEID
TASKOWNERID		typedef GUID
REFTASKOWNERID		typedef ptr TASKOWNERID

ifndef LF_FACESIZE

LOGFONTA		STRUC
lfHeight		LONG ?
lfWidth			LONG ?
lfEscapement		LONG ?
lfOrientation		LONG ?
lfWeight		LONG ?
lfItalic		db ?
lfUnderline		db ?
lfStrikeOut		db ?
lfCharSet		db ?
lfOutPrecision		db ?
lfClipPrecision		db ?
lfQuality		db ?
lfPitchAndFamily	db ?
lfFaceName		CHAR 32 dup(?)
LOGFONTA		ENDS

LOGFONTW		STRUC
lfHeight		LONG ?
lfWidth			LONG ?
lfEscapement		LONG ?
lfOrientation		LONG ?
lfWeight		LONG ?
lfItalic		db ?
lfUnderline		db ?
lfStrikeOut		db ?
lfCharSet		db ?
lfOutPrecision		db ?
lfClipPrecision		db ?
lfQuality		db ?
lfPitchAndFamily	db ?
lfFaceName		WCHAR 32 dup(?)
LOGFONTW		ENDS

LOGFONT			typedef LOGFONTW

endif

.enum SHCOLSTATE {
    SHCOLSTATE_DEFAULT		= 0,
    SHCOLSTATE_TYPE_STR		= 0x1,
    SHCOLSTATE_TYPE_INT		= 0x2,
    SHCOLSTATE_TYPE_DATE	= 0x3,
    SHCOLSTATE_TYPEMASK		= 0xf,
    SHCOLSTATE_ONBYDEFAULT	= 0x10,
    SHCOLSTATE_SLOW		= 0x20,
    SHCOLSTATE_EXTENDED		= 0x40,
    SHCOLSTATE_SECONDARYUI	= 0x80,
    SHCOLSTATE_HIDDEN		= 0x100,
    SHCOLSTATE_PREFER_VARCMP	= 0x200,
    SHCOLSTATE_PREFER_FMTCMP	= 0x400,
    SHCOLSTATE_NOSORTBYFOLDERNESS = 0x800,
    SHCOLSTATE_VIEWONLY		= 0x10000,
    SHCOLSTATE_BATCHREAD	= 0x20000,
    SHCOLSTATE_NO_GROUPBY	= 0x40000,
    SHCOLSTATE_FIXED_WIDTH	= 0x1000,
    SHCOLSTATE_NODPISCALE	= 0x2000,
    SHCOLSTATE_FIXED_RATIO	= 0x4000,
    SHCOLSTATE_DISPLAYMASK	= 0xf000
    }

SHCOLSTATEF		typedef DWORD
SHCOLUMNID		typedef PROPERTYKEY
LPCSHCOLUMNID		typedef ptr SHCOLUMNID

.enum DEVICE_SCALE_FACTOR {
    SCALE_100_PERCENT	= 100,
    SCALE_120_PERCENT	= 120,
    SCALE_140_PERCENT	= 140,
    SCALE_150_PERCENT	= 150,
    SCALE_160_PERCENT	= 160,
    SCALE_180_PERCENT	= 180,
    SCALE_225_PERCENT	= 225
    }

endif
