1 | /*
|
---|
2 | * Copyright 2002 Ove Kaaven
|
---|
3 | * Copyright 2004 Francois Gouget
|
---|
4 | * Copyright 2005 Juan Lang
|
---|
5 | *
|
---|
6 | * This library is free software; you can redistribute it and/or
|
---|
7 | * modify it under the terms of the GNU Lesser General Public
|
---|
8 | * License as published by the Free Software Foundation; either
|
---|
9 | * version 2.1 of the License, or (at your option) any later version.
|
---|
10 | *
|
---|
11 | * This library is distributed in the hope that it will be useful,
|
---|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
14 | * Lesser General Public License for more details.
|
---|
15 | *
|
---|
16 | * You should have received a copy of the GNU Lesser General Public
|
---|
17 | * License along with this library; if not, write to the Free Software
|
---|
18 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
---|
19 | */
|
---|
20 |
|
---|
21 | /*
|
---|
22 | * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
|
---|
23 | * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
|
---|
24 | * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
|
---|
25 | * a choice of LGPL license versions is made available with the language indicating
|
---|
26 | * that LGPLv2 or any later version may be used, or where a choice of which version
|
---|
27 | * of the LGPL is applied is otherwise unspecified.
|
---|
28 | */
|
---|
29 |
|
---|
30 | #ifndef DO_NO_IMPORTS
|
---|
31 | import "objidl.idl";
|
---|
32 | import "oaidl.idl";
|
---|
33 | #endif
|
---|
34 |
|
---|
35 | /*
|
---|
36 | * Windows SDK braindamage alert
|
---|
37 | *
|
---|
38 | * PID_DICTIONARY and PID_CODEPAGE are defined by msidefs.h too
|
---|
39 | * PID_SECURITY is defined in msidefs.h with a different value!
|
---|
40 | * So these need to be undefined first.
|
---|
41 | */
|
---|
42 | cpp_quote("#ifdef PID_DICTIONARY")
|
---|
43 | cpp_quote("#undef PID_DICTIONARY")
|
---|
44 | cpp_quote("#endif")
|
---|
45 |
|
---|
46 | cpp_quote("#ifdef PID_CODEPAGE")
|
---|
47 | cpp_quote("#undef PID_CODEPAGE")
|
---|
48 | cpp_quote("#endif")
|
---|
49 |
|
---|
50 | cpp_quote("#ifdef PID_SECURITY")
|
---|
51 | cpp_quote("#undef PID_SECURITY")
|
---|
52 | cpp_quote("#endif")
|
---|
53 |
|
---|
54 | /******************** Property Storage ********************/
|
---|
55 |
|
---|
56 | interface IEnumSTATPROPSTG;
|
---|
57 | interface IEnumSTATPROPSETSTG;
|
---|
58 |
|
---|
59 | [
|
---|
60 | object,
|
---|
61 | uuid(00000138-0000-0000-C000-000000000046),
|
---|
62 | pointer_default(unique)
|
---|
63 | ]
|
---|
64 | interface IPropertyStorage : IUnknown
|
---|
65 | {
|
---|
66 | typedef [unique] IPropertyStorage *LPPROPERTYSTORAGE;
|
---|
67 |
|
---|
68 | const DWORD PROPSETFLAG_DEFAULT = 0;
|
---|
69 | const DWORD PROPSETFLAG_NONSIMPLE = 1;
|
---|
70 | const DWORD PROPSETFLAG_ANSI = 2;
|
---|
71 | const DWORD PROPSETFLAG_UNBUFFERED = 4;
|
---|
72 | const DWORD PROPSETFLAG_CASE_SENSITIVE = 8;
|
---|
73 |
|
---|
74 | const DWORD PROPSET_BEHAVIOR_CASE_SENSITIVE = 1;
|
---|
75 |
|
---|
76 | const PROPID PID_DICTIONARY = 0x00000000;
|
---|
77 | const PROPID PID_CODEPAGE = 0x00000001;
|
---|
78 | const PROPID PID_FIRST_USABLE = 0x00000002;
|
---|
79 | const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff;
|
---|
80 | const PROPID PID_LOCALE = 0x80000000;
|
---|
81 | const PROPID PID_MODIFY_TIME = 0x80000001;
|
---|
82 | const PROPID PID_SECURITY = 0x80000002;
|
---|
83 | const PROPID PID_BEHAVIOR = 0x80000003;
|
---|
84 | const PROPID PID_ILLEGAL = 0xffffffff;
|
---|
85 | const PROPID PID_MIN_READONLY = 0x80000000;
|
---|
86 | const PROPID PID_MAX_READONLY = 0xbfffffff;
|
---|
87 |
|
---|
88 | typedef struct tagPROPVARIANT PROPVARIANT;
|
---|
89 |
|
---|
90 | #define TYPEDEF_CA(type, name) \
|
---|
91 | typedef struct tag##name { \
|
---|
92 | ULONG cElems; \
|
---|
93 | [size_is(cElems)] \
|
---|
94 | type *pElems; \
|
---|
95 | } name
|
---|
96 |
|
---|
97 | TYPEDEF_CA(unsigned char, CAUB);
|
---|
98 | TYPEDEF_CA(short, CAI);
|
---|
99 | TYPEDEF_CA(USHORT, CAUI);
|
---|
100 | TYPEDEF_CA(long, CAL);
|
---|
101 | TYPEDEF_CA(ULONG, CAUL);
|
---|
102 | TYPEDEF_CA(float, CAFLT);
|
---|
103 | TYPEDEF_CA(double, CADBL);
|
---|
104 | TYPEDEF_CA(CY, CACY);
|
---|
105 | TYPEDEF_CA(DATE, CADATE);
|
---|
106 | TYPEDEF_CA(BSTR, CABSTR);
|
---|
107 | TYPEDEF_CA(BSTRBLOB, CABSTRBLOB);
|
---|
108 | TYPEDEF_CA(VARIANT_BOOL, CABOOL);
|
---|
109 | TYPEDEF_CA(SCODE, CASCODE);
|
---|
110 | TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT);
|
---|
111 | TYPEDEF_CA(LARGE_INTEGER, CAH);
|
---|
112 | TYPEDEF_CA(ULARGE_INTEGER, CAUH);
|
---|
113 | TYPEDEF_CA(LPSTR, CALPSTR);
|
---|
114 | TYPEDEF_CA(LPWSTR, CALPWSTR);
|
---|
115 | TYPEDEF_CA(FILETIME, CAFILETIME);
|
---|
116 | TYPEDEF_CA(CLIPDATA, CACLIPDATA);
|
---|
117 | TYPEDEF_CA(CLSID, CACLSID);
|
---|
118 |
|
---|
119 | struct tagPROPVARIANT {
|
---|
120 | VARTYPE vt;
|
---|
121 | WORD wReserved1;
|
---|
122 | WORD wReserved2;
|
---|
123 | WORD wReserved3;
|
---|
124 | [switch_is(vt & 0x1fff)] union {
|
---|
125 | [case(VT_EMPTY, VT_NULL)] ;
|
---|
126 | [case(VT_I1)] char cVal;
|
---|
127 | [case(VT_UI1)] UCHAR bVal;
|
---|
128 | [case(VT_I2)] short iVal;
|
---|
129 | [case(VT_UI2)] USHORT uiVal;
|
---|
130 | [case(VT_BOOL)] VARIANT_BOOL boolVal;
|
---|
131 | #if 0 /* illegal in C++ */
|
---|
132 | [case(VT_ILLEGAL)] _VARIANT_BOOL bool;
|
---|
133 | #endif
|
---|
134 | [case(VT_I4)] long lVal;
|
---|
135 | [case(VT_UI4)] ULONG ulVal;
|
---|
136 | [case(VT_R4)] float fltVal;
|
---|
137 | [case(VT_ERROR)] SCODE scode;
|
---|
138 | [case(VT_I8)] LARGE_INTEGER hVal;
|
---|
139 | [case(VT_UI8)] ULARGE_INTEGER uhVal;
|
---|
140 | [case(VT_R8)] double dblVal;
|
---|
141 | [case(VT_CY)] CY cyVal;
|
---|
142 | [case(VT_DATE)] DATE date;
|
---|
143 | [case(VT_FILETIME)] FILETIME filetime;
|
---|
144 | [case(VT_CLSID)] CLSID *puuid;
|
---|
145 | [case(VT_BLOB, VT_BLOB_OBJECT)] BLOB blob;
|
---|
146 | [case(VT_CF)] CLIPDATA *pclipdata;
|
---|
147 | [case(VT_STREAM, VT_STREAMED_OBJECT)] IStream *pStream;
|
---|
148 | [case(VT_STORAGE, VT_STORED_OBJECT)] IStorage *pStorage;
|
---|
149 | [case(VT_BSTR)] BSTR bstrVal;
|
---|
150 | [case(VT_BSTR_BLOB)] BSTRBLOB bstrblobVal;
|
---|
151 | [case(VT_LPSTR)] LPSTR pszVal;
|
---|
152 | [case(VT_LPWSTR)] LPWSTR pwszVal;
|
---|
153 | [case(VT_UI1|VT_VECTOR)] CAUB caub;
|
---|
154 | [case(VT_I2|VT_VECTOR)] CAI cai;
|
---|
155 | [case(VT_UI2|VT_VECTOR)] CAUI caui;
|
---|
156 | [case(VT_BOOL|VT_VECTOR)] CABOOL cabool;
|
---|
157 | [case(VT_I4|VT_VECTOR)] CAL cal;
|
---|
158 | [case(VT_UI4|VT_VECTOR)] CAUL caul;
|
---|
159 | [case(VT_R4|VT_VECTOR)] CAFLT caflt;
|
---|
160 | [case(VT_ERROR|VT_VECTOR)] CASCODE cascode;
|
---|
161 | [case(VT_I8|VT_VECTOR)] CAH cah;
|
---|
162 | [case(VT_UI8|VT_VECTOR)] CAUH cauh;
|
---|
163 | [case(VT_R8|VT_VECTOR)] CADBL cadbl;
|
---|
164 | [case(VT_CY|VT_VECTOR)] CACY cacy;
|
---|
165 | [case(VT_DATE|VT_VECTOR)] CADATE cadate;
|
---|
166 | [case(VT_FILETIME|VT_VECTOR)] CAFILETIME cafiletime;
|
---|
167 | [case(VT_CLSID|VT_VECTOR)] CACLSID cauuid;
|
---|
168 | [case(VT_CF|VT_VECTOR)] CACLIPDATA caclipdata;
|
---|
169 | [case(VT_BSTR|VT_VECTOR)] CABSTR cabstr;
|
---|
170 | [case(VT_BSTR_BLOB|VT_VECTOR)] CABSTRBLOB cabstrblob;
|
---|
171 | [case(VT_LPSTR|VT_VECTOR)] CALPSTR calpstr;
|
---|
172 | [case(VT_LPWSTR|VT_VECTOR)] CALPWSTR calpwstr;
|
---|
173 | [case(VT_VARIANT|VT_VECTOR)] CAPROPVARIANT capropvar;
|
---|
174 | [case(VT_ARRAY|VT_I1,
|
---|
175 | VT_ARRAY|VT_UI1,
|
---|
176 | VT_ARRAY|VT_I2,
|
---|
177 | VT_ARRAY|VT_UI2,
|
---|
178 | VT_ARRAY|VT_I4,
|
---|
179 | VT_ARRAY|VT_UI4,
|
---|
180 | VT_ARRAY|VT_INT,
|
---|
181 | VT_ARRAY|VT_UINT,
|
---|
182 | VT_ARRAY|VT_R4,
|
---|
183 | VT_ARRAY|VT_R8,
|
---|
184 | VT_ARRAY|VT_CY,
|
---|
185 | VT_ARRAY|VT_DATE,
|
---|
186 | VT_ARRAY|VT_BSTR,
|
---|
187 | VT_ARRAY|VT_BOOL,
|
---|
188 | VT_ARRAY|VT_DECIMAL,
|
---|
189 | VT_ARRAY|VT_DISPATCH,
|
---|
190 | VT_ARRAY|VT_UNKNOWN,
|
---|
191 | VT_ARRAY|VT_ERROR,
|
---|
192 | VT_ARRAY|VT_VARIANT)] LPSAFEARRAY parray;
|
---|
193 | [case(VT_BYREF|VT_I1)] CHAR *pcVal;
|
---|
194 | [case(VT_BYREF|VT_UI1)] UCHAR *pbVal;
|
---|
195 | [case(VT_BYREF|VT_I2)] SHORT *piVal;
|
---|
196 | [case(VT_BYREF|VT_UI2)] USHORT *puiVal;
|
---|
197 | [case(VT_BYREF|VT_I4)] LONG *plVal;
|
---|
198 | [case(VT_BYREF|VT_UI4)] ULONG *pulVal;
|
---|
199 | [case(VT_BYREF|VT_INT)] INT *pintVal;
|
---|
200 | [case(VT_BYREF|VT_UINT)] UINT *puintVal;
|
---|
201 | [case(VT_BYREF|VT_R4)] FLOAT *pfltVal;
|
---|
202 | [case(VT_BYREF|VT_R8)] DOUBLE *pdblVal;
|
---|
203 | [case(VT_BYREF|VT_BOOL)] VARIANT_BOOL *pboolVal;
|
---|
204 | [case(VT_BYREF|VT_DECIMAL)] DECIMAL *pdecVal;
|
---|
205 | [case(VT_BYREF|VT_ERROR)] SCODE *pscode;
|
---|
206 | [case(VT_BYREF|VT_CY)] CY *pcyVal;
|
---|
207 | [case(VT_BYREF|VT_DATE)] DATE *pdate;
|
---|
208 | [case(VT_BYREF|VT_BSTR)] BSTR *pbstrVal;
|
---|
209 | [case(VT_BYREF|VT_UNKNOWN)] IUnknown **ppunkVal;
|
---|
210 | [case(VT_BYREF|VT_DISPATCH)] IDispatch **ppdispVal;
|
---|
211 | [case(VT_BYREF|VT_ARRAY)] LPSAFEARRAY *pparray;
|
---|
212 | [case(VT_BYREF|VT_VARIANT)] PROPVARIANT *pvarVal;
|
---|
213 | };
|
---|
214 | };
|
---|
215 |
|
---|
216 | typedef struct tagPROPVARIANT *LPPROPVARIANT;
|
---|
217 |
|
---|
218 | cpp_quote("#if 0")
|
---|
219 | typedef const PROPVARIANT * REFPROPVARIANT;
|
---|
220 | cpp_quote("#endif")
|
---|
221 | cpp_quote("#ifndef _REFPROPVARIANT_DEFINED")
|
---|
222 | cpp_quote("#define _REFPROPVARIANT_DEFINED")
|
---|
223 | cpp_quote("#ifdef __cplusplus")
|
---|
224 | cpp_quote("#define REFPROPVARIANT const PROPVARIANT &")
|
---|
225 | cpp_quote("#else")
|
---|
226 | cpp_quote("#define REFPROPVARIANT const PROPVARIANT * __MIDL_CONST")
|
---|
227 | cpp_quote("#endif")
|
---|
228 | cpp_quote("#endif")
|
---|
229 |
|
---|
230 | cpp_quote("#define PIDDI_THUMBNAIL 0x00000002L /* VT_BLOB */")
|
---|
231 | cpp_quote("")
|
---|
232 | cpp_quote("#define PIDSI_TITLE 0x00000002L /* VT_LPSTR */")
|
---|
233 | cpp_quote("#define PIDSI_SUBJECT 0x00000003L /* VT_LPSTR */")
|
---|
234 | cpp_quote("#define PIDSI_AUTHOR 0x00000004L /* VT_LPSTR */")
|
---|
235 | cpp_quote("#define PIDSI_KEYWORDS 0x00000005L /* VT_LPSTR */")
|
---|
236 | cpp_quote("#define PIDSI_COMMENTS 0x00000006L /* VT_LPSTR */")
|
---|
237 | cpp_quote("#define PIDSI_TEMPLATE 0x00000007L /* VT_LPSTR */")
|
---|
238 | cpp_quote("#define PIDSI_LASTAUTHOR 0x00000008L /* VT_LPSTR */")
|
---|
239 | cpp_quote("#define PIDSI_REVNUMBER 0x00000009L /* VT_LPSTR */")
|
---|
240 | cpp_quote("#define PIDSI_EDITTIME 0x0000000AL /* VT_FILETIME (UTC) */")
|
---|
241 | cpp_quote("#define PIDSI_LASTPRINTED 0x0000000BL /* VT_FILETIME (UTC) */")
|
---|
242 | cpp_quote("#define PIDSI_CREATE_DTM 0x0000000CL /* VT_FILETIME (UTC) */")
|
---|
243 | cpp_quote("#define PIDSI_LASTSAVE_DTM 0x0000000DL /* VT_FILETIME (UTC) */")
|
---|
244 | cpp_quote("#define PIDSI_PAGECOUNT 0x0000000EL /* VT_I4 */")
|
---|
245 | cpp_quote("#define PIDSI_WORDCOUNT 0x0000000FL /* VT_I4 */")
|
---|
246 | cpp_quote("#define PIDSI_CHARCOUNT 0x00000010L /* VT_I4 */")
|
---|
247 | cpp_quote("#define PIDSI_THUMBNAIL 0x00000011L /* VT_CF */")
|
---|
248 | cpp_quote("#define PIDSI_APPNAME 0x00000012L /* VT_LPSTR */")
|
---|
249 | cpp_quote("#define PIDSI_DOC_SECURITY 0x00000013L /* VT_I4 */")
|
---|
250 | cpp_quote("")
|
---|
251 | cpp_quote("#define PIDDSI_CATEGORY 0x00000002L /* VT_LPSTR */")
|
---|
252 | cpp_quote("#define PIDDSI_PRESFORMAT 0x00000003L /* VT_LPSTR */")
|
---|
253 | cpp_quote("#define PIDDSI_BYTECOUNT 0x00000004L /* VT_I4 */")
|
---|
254 | cpp_quote("#define PIDDSI_LINECOUNT 0x00000005L /* VT_I4 */")
|
---|
255 | cpp_quote("#define PIDDSI_PARCOUNT 0x00000006L /* VT_I4 */")
|
---|
256 | cpp_quote("#define PIDDSI_SLIDECOUNT 0x00000007L /* VT_I4 */")
|
---|
257 | cpp_quote("#define PIDDSI_NOTECOUNT 0x00000008L /* VT_I4 */")
|
---|
258 | cpp_quote("#define PIDDSI_HIDDENCOUNT 0x00000009L /* VT_I4 */")
|
---|
259 | cpp_quote("#define PIDDSI_MMCLIPCOUNT 0x0000000AL /* VT_I4 */")
|
---|
260 | cpp_quote("#define PIDDSI_SCALE 0x0000000BL /* VT_BOOL */")
|
---|
261 | cpp_quote("#define PIDDSI_HEADINGPAIR 0x0000000CL /* VT_VARIANT|VT_VECTOR */")
|
---|
262 | cpp_quote("#define PIDDSI_DOCPARTS 0x0000000DL /* VT_LPSTR|VT_VECTOR */")
|
---|
263 | cpp_quote("#define PIDDSI_MANAGER 0x0000000EL /* VT_LPSTR */")
|
---|
264 | cpp_quote("#define PIDDSI_COMPANY 0x0000000FL /* VT_LPSTR */")
|
---|
265 | cpp_quote("#define PIDDSI_LINKSDIRTY 0x00000010L /* VT_B0OL */")
|
---|
266 |
|
---|
267 | const ULONG PRSPEC_INVALID = 0xffffffff;
|
---|
268 | const ULONG PRSPEC_LPWSTR = 0;
|
---|
269 | const ULONG PRSPEC_PROPID = 1;
|
---|
270 |
|
---|
271 | typedef struct tagPROPSPEC {
|
---|
272 | ULONG ulKind;
|
---|
273 | [switch_is(ulKind)] union {
|
---|
274 | [case(PRSPEC_PROPID)] PROPID propid;
|
---|
275 | [case(PRSPEC_LPWSTR)] LPOLESTR lpwstr;
|
---|
276 | [default] ;
|
---|
277 | } DUMMYUNIONNAME;
|
---|
278 | } PROPSPEC;
|
---|
279 |
|
---|
280 | typedef struct tagSTATPROPSTG {
|
---|
281 | LPOLESTR lpwstrName;
|
---|
282 | PROPID propid;
|
---|
283 | VARTYPE vt;
|
---|
284 | } STATPROPSTG;
|
---|
285 |
|
---|
286 | cpp_quote("/* Macros for dwOSVersion member of STATPROPSETSTG */")
|
---|
287 | cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD((dwOSVer))")
|
---|
288 | cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer)))")
|
---|
289 | cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer)))")
|
---|
290 | cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN 0xffffffff")
|
---|
291 |
|
---|
292 | typedef struct tagSTATPROPSETSTG {
|
---|
293 | FMTID fmtid;
|
---|
294 | CLSID clsid;
|
---|
295 | DWORD grfFlags;
|
---|
296 | FILETIME mtime;
|
---|
297 | FILETIME ctime;
|
---|
298 | FILETIME atime;
|
---|
299 | DWORD dwOSVersion;
|
---|
300 | } STATPROPSETSTG;
|
---|
301 |
|
---|
302 | HRESULT ReadMultiple(
|
---|
303 | [in] ULONG cpspec,
|
---|
304 | [in, size_is(cpspec)] const PROPSPEC rgpspec[],
|
---|
305 | [out, size_is(cpspec)] PROPVARIANT rgpropvar[]);
|
---|
306 |
|
---|
307 | HRESULT WriteMultiple(
|
---|
308 | [in] ULONG cpspec,
|
---|
309 | [in, size_is(cpspec)] const PROPSPEC rgpspec[],
|
---|
310 | [in, size_is(cpspec)] const PROPVARIANT rgpropvar[],
|
---|
311 | [in] PROPID propidNameFirst);
|
---|
312 |
|
---|
313 | HRESULT DeleteMultiple(
|
---|
314 | [in] ULONG cpspec,
|
---|
315 | [in, size_is(cpspec)] const PROPSPEC rgpspec[]);
|
---|
316 |
|
---|
317 | HRESULT ReadPropertyNames(
|
---|
318 | [in] ULONG cpropid,
|
---|
319 | [in, size_is(cpropid)] const PROPID rgpropid[],
|
---|
320 | [out, size_is(cpropid)] LPOLESTR rglpwstrName[]);
|
---|
321 |
|
---|
322 | HRESULT WritePropertyNames(
|
---|
323 | [in] ULONG cpropid,
|
---|
324 | [in, size_is(cpropid)] const PROPID rgpropid[],
|
---|
325 | [in, size_is(cpropid)] const LPOLESTR rglpwstrName[]);
|
---|
326 |
|
---|
327 | HRESULT DeletePropertyNames(
|
---|
328 | [in] ULONG cpropid,
|
---|
329 | [in, size_is(cpropid)] const PROPID rgpropid[]);
|
---|
330 |
|
---|
331 | HRESULT Commit(
|
---|
332 | [in] DWORD grfCommitFlags);
|
---|
333 |
|
---|
334 | HRESULT Revert();
|
---|
335 |
|
---|
336 | HRESULT Enum(
|
---|
337 | [out] IEnumSTATPROPSTG **ppenum);
|
---|
338 |
|
---|
339 | HRESULT SetTimes(
|
---|
340 | [in] const FILETIME *pctime,
|
---|
341 | [in] const FILETIME *patime,
|
---|
342 | [in] const FILETIME *pmtime);
|
---|
343 |
|
---|
344 | HRESULT SetClass(
|
---|
345 | [in] REFCLSID clsid);
|
---|
346 |
|
---|
347 | HRESULT Stat(
|
---|
348 | [out] STATPROPSETSTG *statpsstg);
|
---|
349 | }
|
---|
350 |
|
---|
351 | [
|
---|
352 | object,
|
---|
353 | uuid(0000013A-0000-0000-C000-000000000046),
|
---|
354 | pointer_default(unique)
|
---|
355 | ]
|
---|
356 | interface IPropertySetStorage : IUnknown
|
---|
357 | {
|
---|
358 | typedef [unique] IPropertySetStorage *LPPROPERTYSETSTORAGE;
|
---|
359 |
|
---|
360 | HRESULT Create(
|
---|
361 | [in] REFFMTID rfmtid,
|
---|
362 | [in, unique] const CLSID *pclsid,
|
---|
363 | [in] DWORD grfFlags,
|
---|
364 | [in] DWORD grfMode,
|
---|
365 | [out] IPropertyStorage **ppprstg);
|
---|
366 |
|
---|
367 | HRESULT Open(
|
---|
368 | [in] REFFMTID rfmtid,
|
---|
369 | [in] DWORD grfMode,
|
---|
370 | [out] IPropertyStorage **ppprstg);
|
---|
371 |
|
---|
372 | HRESULT Delete(
|
---|
373 | [in] REFFMTID rfmtid);
|
---|
374 |
|
---|
375 | HRESULT Enum(
|
---|
376 | [out] IEnumSTATPROPSETSTG **ppenum);
|
---|
377 | }
|
---|
378 |
|
---|
379 | [
|
---|
380 | object,
|
---|
381 | uuid(00000139-0000-0000-C000-000000000046),
|
---|
382 | pointer_default(unique)
|
---|
383 | ]
|
---|
384 | interface IEnumSTATPROPSTG : IUnknown
|
---|
385 | {
|
---|
386 | typedef [unique] IEnumSTATPROPSTG *LPENUMSTATPROPSTG;
|
---|
387 |
|
---|
388 | [local]
|
---|
389 | HRESULT Next(
|
---|
390 | [in] ULONG celt,
|
---|
391 | [out, size_is(celt), length_is(*pceltFetched)]
|
---|
392 | STATPROPSTG *rgelt,
|
---|
393 | [out] ULONG *pceltFetched);
|
---|
394 |
|
---|
395 | [call_as(Next)]
|
---|
396 | HRESULT RemoteNext(
|
---|
397 | [in] ULONG celt,
|
---|
398 | [out, size_is(celt), length_is(*pceltFetched)]
|
---|
399 | STATPROPSTG *rgelt,
|
---|
400 | [out] ULONG *pceltFetched);
|
---|
401 |
|
---|
402 | HRESULT Skip(
|
---|
403 | [in] ULONG celt);
|
---|
404 |
|
---|
405 | HRESULT Reset();
|
---|
406 |
|
---|
407 | HRESULT Clone(
|
---|
408 | [out] IEnumSTATPROPSTG **ppenum);
|
---|
409 | }
|
---|
410 |
|
---|
411 | [
|
---|
412 | object,
|
---|
413 | uuid(0000013B-0000-0000-C000-000000000046),
|
---|
414 | pointer_default(unique)
|
---|
415 | ]
|
---|
416 | interface IEnumSTATPROPSETSTG : IUnknown
|
---|
417 | {
|
---|
418 | typedef [unique] IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
|
---|
419 |
|
---|
420 | [local]
|
---|
421 | HRESULT Next(
|
---|
422 | [in] ULONG celt,
|
---|
423 | [out, size_is(celt), length_is(*pceltFetched)]
|
---|
424 | STATPROPSETSTG *rgelt,
|
---|
425 | [out] ULONG *pceltFetched);
|
---|
426 |
|
---|
427 | [call_as(Next)]
|
---|
428 | HRESULT RemoteNext(
|
---|
429 | [in] ULONG celt,
|
---|
430 | [out, size_is(celt), length_is(*pceltFetched)]
|
---|
431 | STATPROPSETSTG *rgelt,
|
---|
432 | [out] ULONG *pceltFetched);
|
---|
433 |
|
---|
434 | HRESULT Skip(
|
---|
435 | [in] ULONG celt);
|
---|
436 |
|
---|
437 | HRESULT Reset();
|
---|
438 |
|
---|
439 | HRESULT Clone(
|
---|
440 | [out] IEnumSTATPROPSETSTG **ppenum);
|
---|
441 | }
|
---|
442 |
|
---|
443 | typedef struct SERIALIZEDPROPERTYVALUE {
|
---|
444 | DWORD dwType;
|
---|
445 | BYTE rgb[1];
|
---|
446 | } SERIALIZEDPROPERTYVALUE;
|
---|
447 |
|
---|
448 | cpp_quote("HRESULT WINAPI FreePropVariantArray(ULONG,PROPVARIANT*);")
|
---|
449 | cpp_quote("HRESULT WINAPI PropVariantClear(PROPVARIANT*);")
|
---|
450 | cpp_quote("HRESULT WINAPI PropVariantCopy(PROPVARIANT*,const PROPVARIANT*);")
|
---|
451 | cpp_quote("")
|
---|
452 | cpp_quote("#define _PROPVARIANT_INIT_DEFINED_")
|
---|
453 | cpp_quote("#define PropVariantInit(p) memset((p), 0, sizeof(PROPVARIANT))")
|
---|
454 | cpp_quote("")
|
---|
455 | cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
|
---|
456 | cpp_quote("#define _STGCREATEPROPSTG_DEFINED_")
|
---|
457 | cpp_quote("HRESULT WINAPI StgCreatePropStg(IUnknown *, REFFMTID, const CLSID *, DWORD, DWORD, IPropertyStorage **);")
|
---|
458 | cpp_quote("HRESULT WINAPI StgOpenPropStg(IUnknown *, REFFMTID, DWORD, DWORD, IPropertyStorage **);")
|
---|
459 | cpp_quote("HRESULT WINAPI StgCreatePropSetStg(IStorage *, DWORD, IPropertySetStorage **);")
|
---|
460 | cpp_quote("#define CCH_MAX_PROPSTG_NAME 31")
|
---|
461 | cpp_quote("HRESULT WINAPI FmtIdToPropStgName(const FMTID *, LPOLESTR);")
|
---|
462 | cpp_quote("HRESULT WINAPI PropStgNameToFmtId(const LPOLESTR, FMTID *);")
|
---|
463 | cpp_quote("#endif /* _STGCREATEPROPSTG_DEFINED_ */")
|
---|
464 | cpp_quote("")
|
---|