source: trunk/src/shell32/pidl.h@ 2013

Last change on this file since 2013 was 1543, checked in by phaller, 26 years ago

Add: update to wine/shell32 1999/11/02 #1

File size: 5.5 KB
Line 
1/* $Id: pidl.h,v 1.2 1999-11-02 18:50:15 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
11/*
12 * internal pidl functions
13 * 1998 <juergen.schmied@metronet.de>
14 *
15 * DO NOT use this definitions outside the shell32.dll !
16 *
17 * The contents of a pidl should never used from a application
18 * directly.
19 *
20 * This stuff is used from SHGetFileAttributes, ShellFolder
21 * EnumIDList and ShellView.
22 */
23
24#ifndef __WINE_PIDL_H
25#define __WINE_PIDL_H
26
27
28/*****************************************************************************
29 * Includes *
30 *****************************************************************************/
31
32#include "shlobj.h"
33
34/*
35* the pidl does cache fileattributes to speed up SHGetAttributes when
36* displaying a big number of files.
37*
38* a pidl of NULL means the desktop
39*
40* The structure of the pidl seems to be a union. The first byte of the
41* PIDLDATA desribes the type of pidl.
42*
43* object ! first byte / ! format ! living space
44* ! size
45* ----------------------------------------------------------------
46* my computer 0x1F/20 mycomp (2) (usual)
47* network 0x1F mycomp
48* bitbucket 0x1F mycomp
49* drive 0x23/25 drive (usual)
50* drive 0x25/25 drive (lnk/persistant)
51* drive 0x29/25 drive
52* shell extension 0x2E mycomp
53* 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 0x41 network (3)
58* computer 0x42 network (4)
59* whole network 0x47 network (5)
60* MSITStore 0x61 htmlhlp (7)
61* history/favorites 0xb1 file
62* share 0xc3 network (6)
63*
64* guess: the persistant elements are non tracking
65*
66* (1) dummy byte is used, attributes are empty
67* (2) IID_MyComputer = 20D04FE0L-3AEA-1069-A2D8-08002B30309D
68* (3) two strings "workgroup" "microsoft network"
69* (4) one string "\\sirius"
70* (5) one string "whole network"
71* (6) one string "\\sirius\c"
72* (7) contains string "mk:@MSITStore:C:\path\file.chm::/path/filename.htm"
73* GUID 871C5380-42A0-1069-A2EA-08002B30309D
74*/
75
76#define PT_DESKTOP 0x00 /* internal */
77#define PT_MYCOMP 0x1F
78#define PT_DRIVE 0x23
79#define PT_DRIVE2 0x25
80#define PT_DRIVE3 0x29
81#define PT_SPECIAL 0x2E
82#define PT_DRIVE1 0x2F
83#define PT_FOLDER1 0x30
84#define PT_FOLDER 0x31
85#define PT_VALUE 0x32
86#define PT_WORKGRP 0x41
87#define PT_COMP 0x42
88#define PT_NETWORK 0x47
89#define PT_IESPECIAL 0xb1
90#define PT_SHARE 0xc3
91
92#include "pshpack1.h"
93typedef BYTE PIDLTYPE;
94
95typedef struct tagPIDLDATA
96{ PIDLTYPE type; /*00*/
97 union
98 { struct
99 { BYTE dummy; /*01*/
100 GUID guid; /*02*/
101 BYTE dummy1; /*18*/
102 } mycomp;
103 struct
104 { CHAR szDriveName[20]; /*01*/
105 DWORD dwUnknown; /*21*/
106 /* the drive seems to be 25 bytes every time */
107 } drive;
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 The second the dos name when needed or just 0x00 */
117 } file, folder, generic;
118 struct
119 { WORD dummy; /*01*/
120 CHAR szNames[1]; /*03*/
121 } network;
122 struct
123 { WORD dummy; /*01*/
124 DWORD dummy1; /*02*/
125 CHAR szName[1]; /*06*/ /* teminated by 0x00 0x00 */
126 } htmlhelp;
127 }u;
128} PIDLDATA, *LPPIDLDATA;
129#include "poppack.h"
130
131/*
132 * getting special values from simple pidls
133 */
134DWORD WINAPI _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
135BOOL WINAPI _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
136DWORD WINAPI _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
137BOOL WINAPI _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
138void WINAPI _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
139BOOL WINAPI _ILGetAttributeStr (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
140
141BOOL WINAPI _ILGetFileDateTime (LPCITEMIDLIST pidl, FILETIME *ft);
142DWORD WINAPI _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT16);
143
144/*
145 * testing simple pidls
146 */
147BOOL WINAPI _ILIsDesktop (LPCITEMIDLIST pidl);
148BOOL WINAPI _ILIsMyComputer (LPCITEMIDLIST pidl);
149BOOL WINAPI _ILIsDrive (LPCITEMIDLIST pidl);
150BOOL WINAPI _ILIsFolder (LPCITEMIDLIST pidl);
151BOOL WINAPI _ILIsValue (LPCITEMIDLIST pidl);
152BOOL WINAPI _ILIsSpecialFolder (LPCITEMIDLIST pidl);
153BOOL WINAPI _ILIsPidlSimple (LPCITEMIDLIST pidl);
154
155/*
156 * simple pidls from strings
157 */
158LPITEMIDLIST WINAPI _ILCreate (PIDLTYPE,LPCVOID,UINT16);
159
160LPITEMIDLIST WINAPI _ILCreateDesktop (void);
161LPITEMIDLIST WINAPI _ILCreateMyComputer (void);
162LPITEMIDLIST WINAPI _ILCreateIExplore (void);
163LPITEMIDLIST WINAPI _ILCreateControl (void);
164LPITEMIDLIST WINAPI _ILCreatePrinter (void);
165LPITEMIDLIST WINAPI _ILCreateNetwork (void);
166LPITEMIDLIST WINAPI _ILCreateBitBucket (void);
167LPITEMIDLIST WINAPI _ILCreateDrive (LPCSTR);
168LPITEMIDLIST WINAPI _ILCreateFolder (WIN32_FIND_DATAA * stffile);
169LPITEMIDLIST WINAPI _ILCreateValue (WIN32_FIND_DATAA * stffile);
170LPITEMIDLIST WINAPI _ILCreateSpecial (LPCSTR szGUID);
171
172/*
173 * helper functions (getting struct-pointer)
174 */
175LPPIDLDATA WINAPI _ILGetDataPointer (LPCITEMIDLIST);
176LPSTR WINAPI _ILGetTextPointer (PIDLTYPE type, LPPIDLDATA pidldata);
177LPSTR WINAPI _ILGetSTextPointer (PIDLTYPE type, LPPIDLDATA pidldata);
178REFIID WINAPI _ILGetGUIDPointer (LPCITEMIDLIST pidl);
179
180/*
181 * debug helper
182 */
183void pdump (LPCITEMIDLIST pidl);
184BOOL pcheck (LPCITEMIDLIST pidl);
185
186#endif
Note: See TracBrowser for help on using the repository browser.