Changeset 4121 for trunk/src/shell32/pidl.h
- Timestamp:
- Aug 30, 2000, 3:54:57 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/pidl.h
r4032 r4121 1 /* $Id: pidl.h,v 1.5 2000-08-18 02:01:18 phaller Exp $ */ 2 3 /* 4 * Win32 SHELL32 for OS/2 5 * 6 * Copyright 1999 Patrick Haller (haller@zebra.fh-weingarten.de) 7 * Project Odin Software License can be found in LICENSE.TXT 8 * 9 */ 10 1 /* $Id: pidl.h,v 1.6 2000-08-30 13:50:55 sandervl Exp $ */ 11 2 /* 12 3 * internal pidl functions … … 16 7 * 17 8 * The contents of a pidl should never used from a application 18 * directly. 9 * directly. 19 10 * 20 * This stuff is used from SHGetFileAttributes, ShellFolder 21 * EnumIDList and ShellView. 11 * Undocumented: 12 * MS says: the abID of SHITEMID should be treated as binary data and not 13 * be interpreted by applications. Applies to everyone but MS itself. 14 * Word95 interprets the contents of abID (Filesize/Date) so we have to go 15 * for binary compatibility here. 22 16 */ 23 17 24 18 #ifndef __WINE_PIDL_H 25 19 #define __WINE_PIDL_H 26 20 27 28 /*****************************************************************************29 * Includes *30 *****************************************************************************/31 32 21 #include "shlobj.h" 33 22 34 /* 23 /* 35 24 * the pidl does cache fileattributes to speed up SHGetAttributes when 36 25 * displaying a big number of files. … … 41 30 * PIDLDATA desribes the type of pidl. 42 31 * 43 * 44 * 45 * 46 * my computer 0x1F/20 mycomp (2)(usual)47 * network 0x1Fmycomp48 * bitbucket 0x1Fmycomp49 * drive 0x23/25 drive(usual)50 * drive 0x25/25 drive(lnk/persistant)51 * drive 0x29/25drive52 * shell extension 0x2Emycomp53 * drive 0x2F drive(lnk/persistant)54 * folder/file 0x30 folder/file (1)(lnk/persistant)55 * folder 0x31 folder(usual)56 * value 0x32 file(usual)57 * workgroup 0x41network (3)58 * computer 0x42network (4)59 * whole network 0x47network (5)60 * MSITStore 0x61 htmlhlp (7)61 * history/favorites 0xb1file62 * share 0xc3network (6)32 * object ! first byte / ! format ! living space 33 * ! size 34 * ---------------------------------------------------------------- 35 * my computer 0x1F/20 mycomp (2) (usual) 36 * network 0x1F mycomp 37 * bitbucket 0x1F mycomp 38 * drive 0x23/25 drive (usual) 39 * drive 0x25/25 drive (lnk/persistant) 40 * drive 0x29/25 drive 41 * shell extension 0x2E mycomp 42 * drive 0x2F drive (lnk/persistant) 43 * folder/file 0x30 folder/file (1) (lnk/persistant) 44 * folder 0x31 folder (usual) 45 * value 0x32 file (usual) 46 * workgroup 0x41 network (3) 47 * computer 0x42 network (4) 48 * whole network 0x47 network (5) 49 * MSITStore 0x61 htmlhlp (7) 50 * history/favorites 0xb1 file 51 * share 0xc3 network (6) 63 52 * 64 53 * guess: the persistant elements are non tracking … … 66 55 * (1) dummy byte is used, attributes are empty 67 56 * (2) IID_MyComputer = 20D04FE0L-3AEA-1069-A2D8-08002B30309D 68 * (3) two strings 69 * (4) one string 70 * (5) one string "whole network"71 * (6) one string 57 * (3) two strings "workgroup" "microsoft network" 58 * (4) one string "\\sirius" 59 * (5) one string "whole network" 60 * (6) one string "\\sirius\c" 72 61 * (7) contains string "mk:@MSITStore:C:\path\file.chm::/path/filename.htm" 73 * GUID871C5380-42A0-1069-A2EA-08002B30309D62 * GUID 871C5380-42A0-1069-A2EA-08002B30309D 74 63 */ 75 64 76 #define PT_DESKTOP 77 #define PT_MYCOMP 78 #define PT_DRIVE 79 #define PT_DRIVE2 80 #define PT_DRIVE3 81 #define PT_SPECIAL 82 #define PT_DRIVE1 83 #define PT_FOLDER1 84 #define PT_FOLDER 85 #define PT_VALUE 86 #define PT_WORKGRP 87 #define PT_COMP 88 #define PT_NETWORK 89 #define PT_IESPECIAL 90 #define PT_SHARE 65 #define PT_DESKTOP 0x00 /* internal */ 66 #define PT_MYCOMP 0x1F 67 #define PT_DRIVE 0x23 68 #define PT_DRIVE2 0x25 69 #define PT_DRIVE3 0x29 70 #define PT_SPECIAL 0x2E 71 #define PT_DRIVE1 0x2F 72 #define PT_FOLDER1 0x30 73 #define PT_FOLDER 0x31 74 #define PT_VALUE 0x32 75 #define PT_WORKGRP 0x41 76 #define PT_COMP 0x42 77 #define PT_NETWORK 0x47 78 #define PT_IESPECIAL 0xb1 79 #define PT_SHARE 0xc3 91 80 92 81 #include "pshpack1.h" … … 94 83 95 84 typedef struct tagPIDLDATA 96 { PIDLTYPE type;/*00*/97 98 99 { BYTE dummy;/*01*/100 GUID guid;/*02*/101 BYTE dummy1;/*18*/102 103 104 { CHAR szDriveName[20];/*01*/105 DWORD dwUnknown;/*21*/106 107 108 struct 109 { BYTE dummy;/*01 is 0x00 for files or dirs */110 DWORD dwFileSize;/*02*/111 WORD uFileDate;/*06*/112 WORD uFileTime;/*08*/113 WORD uFileAttribs;/*10*/114 CHAR szNames[1];/*12*/115 /* Here are comming two strings. The first is the long name. 116 117 } file, folder, generic; 118 119 { WORD dummy;/*01*/120 CHAR szNames[1];/*03*/121 122 123 { WORD dummy;/*01*/124 DWORD dummy1;/*02*/125 CHAR szName[1];/*06*/ /* teminated by 0x00 0x00 */126 127 85 { PIDLTYPE type; /*00*/ 86 union 87 { struct 88 { BYTE dummy; /*01*/ 89 GUID guid; /*02*/ 90 BYTE dummy1; /*18*/ 91 } mycomp; 92 struct 93 { CHAR szDriveName[20]; /*01*/ 94 DWORD dwUnknown; /*21*/ 95 /* the drive seems to be 25 bytes every time */ 96 } drive; 97 struct 98 { BYTE dummy; /*01 is 0x00 for files or dirs */ 99 DWORD dwFileSize; /*02*/ 100 WORD uFileDate; /*06*/ 101 WORD uFileTime; /*08*/ 102 WORD uFileAttribs; /*10*/ 103 CHAR szNames[1]; /*12*/ 104 /* Here are comming two strings. The first is the long name. 105 The second the dos name when needed or just 0x00 */ 106 } file, folder, generic; 107 struct 108 { WORD dummy; /*01*/ 109 CHAR szNames[1]; /*03*/ 110 } network; 111 struct 112 { WORD dummy; /*01*/ 113 DWORD dummy1; /*02*/ 114 CHAR szName[1]; /*06*/ /* teminated by 0x00 0x00 */ 115 } htmlhelp; 116 }u; 128 117 } PIDLDATA, *LPPIDLDATA; 129 118 #include "poppack.h" … … 132 121 * getting special values from simple pidls 133 122 */ 134 DWORD WINAPI _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 135 BOOL WINAPI _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 136 DWORD WINAPI _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 137 BOOL WINAPI _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 138 void WINAPI _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 139 DWORD WINAPI _ILGetFileAttributes (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 140 DWORD WINAPI _ILGetFileSizeKB (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 123 DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 124 BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 125 DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 126 BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 127 void _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 128 DWORD _ILGetFileAttributes (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize); 141 129 142 BOOL WINAPI _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *ft);143 DWORD WINAPI _ILGetDrive(LPCITEMIDLIST, LPSTR, UINT16);130 BOOL _ILGetFileDateTime (LPCITEMIDLIST pidl, FILETIME *ft); 131 DWORD _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT16); 144 132 145 133 /* 146 134 * testing simple pidls 147 135 */ 148 BOOL WINAPI _ILIsDesktop(LPCITEMIDLIST pidl);149 BOOL WINAPI _ILIsMyComputer(LPCITEMIDLIST pidl);150 BOOL WINAPI _ILIsDrive(LPCITEMIDLIST pidl);151 BOOL WINAPI _ILIsFolder(LPCITEMIDLIST pidl);152 BOOL WINAPI _ILIsValue(LPCITEMIDLIST pidl);153 BOOL WINAPI _ILIsSpecialFolder(LPCITEMIDLIST pidl);154 BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl);136 BOOL _ILIsDesktop (LPCITEMIDLIST pidl); 137 BOOL _ILIsMyComputer (LPCITEMIDLIST pidl); 138 BOOL _ILIsDrive (LPCITEMIDLIST pidl); 139 BOOL _ILIsFolder (LPCITEMIDLIST pidl); 140 BOOL _ILIsValue (LPCITEMIDLIST pidl); 141 BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl); 142 BOOL _ILIsPidlSimple (LPCITEMIDLIST pidl); 155 143 156 144 /* 157 145 * simple pidls from strings 158 146 */ 159 LPITEMIDLIST WINAPI _ILCreate(PIDLTYPE,LPCVOID,UINT16);147 LPITEMIDLIST _ILCreate (PIDLTYPE,LPCVOID,UINT16); 160 148 161 LPITEMIDLIST WINAPI _ILCreateDesktop(void);162 LPITEMIDLIST WINAPI _ILCreateMyComputer(void);163 LPITEMIDLIST WINAPI _ILCreateIExplore(void);164 LPITEMIDLIST WINAPI _ILCreateControl(void);165 LPITEMIDLIST WINAPI _ILCreatePrinter(void);166 LPITEMIDLIST WINAPI _ILCreateNetwork(void);167 LPITEMIDLIST WINAPI _ILCreateBitBucket(void);168 LPITEMIDLIST WINAPI _ILCreateDrive(LPCSTR);169 LPITEMIDLIST WINAPI _ILCreateFolder(WIN32_FIND_DATAA * stffile);170 LPITEMIDLIST WINAPI _ILCreateValue(WIN32_FIND_DATAA * stffile);171 LPITEMIDLIST WINAPI _ILCreateSpecial(LPCSTR szGUID);149 LPITEMIDLIST _ILCreateDesktop (void); 150 LPITEMIDLIST _ILCreateMyComputer (void); 151 LPITEMIDLIST _ILCreateIExplore (void); 152 LPITEMIDLIST _ILCreateControl (void); 153 LPITEMIDLIST _ILCreatePrinter (void); 154 LPITEMIDLIST _ILCreateNetwork (void); 155 LPITEMIDLIST _ILCreateBitBucket (void); 156 LPITEMIDLIST _ILCreateDrive (LPCSTR); 157 LPITEMIDLIST _ILCreateFolder (WIN32_FIND_DATAA * stffile); 158 LPITEMIDLIST _ILCreateValue (WIN32_FIND_DATAA * stffile); 159 LPITEMIDLIST _ILCreateSpecial (LPCSTR szGUID); 172 160 173 161 /* 174 162 * helper functions (getting struct-pointer) 175 163 */ 176 LPPIDLDATA WINAPI _ILGetDataPointer(LPCITEMIDLIST);177 LPSTR WINAPI _ILGetTextPointer (PIDLTYPE type, LPPIDLDATA pidldata);178 LPSTR WINAPI _ILGetSTextPointer (PIDLTYPE type, LPPIDLDATA pidldata);179 REFIID WINAPI _ILGetGUIDPointer(LPCITEMIDLIST pidl);164 LPPIDLDATA _ILGetDataPointer (LPCITEMIDLIST); 165 LPSTR _ILGetTextPointer (LPCITEMIDLIST); 166 LPSTR _ILGetSTextPointer (LPCITEMIDLIST); 167 REFIID _ILGetGUIDPointer (LPCITEMIDLIST pidl); 180 168 181 /* 182 * debug helper 169 /* 170 * debug helper 183 171 */ 172 #ifdef __WIN32OS2__ 184 173 #ifdef DEBUG 185 174 void pdump (LPCITEMIDLIST pidl); … … 189 178 //CB: needed in release build 190 179 BOOL pcheck (LPCITEMIDLIST pidl); 180 #else 181 void pdump (LPCITEMIDLIST pidl); 182 BOOL pcheck (LPCITEMIDLIST pidl); 183 #endif 191 184 192 185 /* 193 186 * aPidl helper 194 187 */ 195 void WINAPI_ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl);196 LPITEMIDLIST * WINAPI_ILCopyaPidl(LPITEMIDLIST * apidlsrc, UINT cidl);197 LPITEMIDLIST * WINAPI_ILCopyCidaToaPidl(LPITEMIDLIST* pidl, LPCIDA cida);188 void _ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl); 189 LPITEMIDLIST * _ILCopyaPidl(LPITEMIDLIST * apidlsrc, UINT cidl); 190 LPITEMIDLIST * _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, LPCIDA cida); 198 191 199 192 #endif
Note:
See TracChangeset
for help on using the changeset viewer.