• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cpp_quote("/**")
2cpp_quote(" * This file is part of the mingw-w64 runtime package.")
3cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
4cpp_quote(" */")
5cpp_quote("")
6cpp_quote("#include <winapifamily.h>")
7cpp_quote("")
8
9import "objidl.idl";
10import "oleidl.idl";
11import "ocidl.idl";
12import "shtypes.idl";
13import "structuredquerycondition.idl";
14
15cpp_quote("")
16cpp_quote("#ifndef PSSTDAPI")
17cpp_quote("#ifdef _PROPSYS_")
18cpp_quote("#define PSSTDAPI STDAPI")
19cpp_quote("#define PSSTDAPI_(type)   STDAPI_(type)")
20cpp_quote("#else")
21cpp_quote("#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE")
22cpp_quote("#define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE")
23cpp_quote("#endif")
24cpp_quote("#endif")
25cpp_quote("")
26cpp_quote("#if 0")
27typedef PROPERTYKEY *REFPROPERTYKEY;
28cpp_quote("#endif")
29cpp_quote("")
30cpp_quote("#include <propkeydef.h>")
31
32cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
33[uuid (b7d14566-0509-4cce-a71f-0a554233bd9b), object, pointer_default (unique)]
34interface IInitializeWithFile : IUnknown {
35  HRESULT Initialize ([in, string] LPCWSTR pszFilePath,[in] DWORD grfMode);
36}
37
38cpp_quote("")
39[uuid (b824b49d-22ac-4161-ac8a-9916e8fa3f7f), object, pointer_default (unique)]
40interface IInitializeWithStream : IUnknown {
41  [local] HRESULT Initialize ([in] IStream *pstream,[in] DWORD grfMode);
42  [call_as (Initialize)] HRESULT RemoteInitialize ([in] IStream *pstream,[in] DWORD grfMode);
43}
44cpp_quote("#endif")
45cpp_quote("")
46cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")
47[uuid (886d8eeb-8cf2-4446-8d02-cdba1dbdcf99), helpstring ("Simple Property Store Interface"), object, pointer_default (unique)]
48interface IPropertyStore : IUnknown {
49  HRESULT GetCount ([out] DWORD *cProps);
50  HRESULT GetAt ([in] DWORD iProp,[out] PROPERTYKEY *pkey);
51  HRESULT GetValue ([in] REFPROPERTYKEY key,[out] PROPVARIANT *pv);
52  HRESULT SetValue ([in] REFPROPERTYKEY key,[in] REFPROPVARIANT propvar);
53  HRESULT Commit ();
54}
55
56cpp_quote("")
57typedef [unique] IPropertyStore *LPPROPERTYSTORE;
58cpp_quote("#endif")
59cpp_quote("")
60cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
61[uuid (71604b0f-97b0-4764-8577-2f13e98a1422), object, pointer_default (unique)]
62interface INamedPropertyStore : IUnknown {
63  HRESULT GetNamedValue ([in, string] LPCWSTR pszName,[out] PROPVARIANT *ppropvar);
64  HRESULT SetNamedValue ([in, string] LPCWSTR pszName,[in] REFPROPVARIANT propvar);
65  HRESULT GetNameCount ([out] DWORD *pdwCount);
66  HRESULT GetNameAt ([in] DWORD iProp,[out] BSTR *pbstrName);
67};
68
69cpp_quote("")
70typedef [v1_enum] enum GETPROPERTYSTOREFLAGS {
71  GPS_DEFAULT = 0x00000000,
72  GPS_HANDLERPROPERTIESONLY = 0x00000001,
73  GPS_READWRITE = 0x00000002,
74  GPS_TEMPORARY = 0x00000004,
75  GPS_FASTPROPERTIESONLY = 0x00000008,
76  GPS_OPENSLOWITEM = 0x00000010,
77  GPS_DELAYCREATION = 0x00000020,
78  GPS_BESTEFFORT = 0x00000040,
79  GPS_NO_OPLOCK = 0x00000080,
80  GPS_PREFERQUERYPROPERTIES = 0x00000100,
81  GPS_MASK_VALID = 0x000001ff
82} GETPROPERTYSTOREFLAGS;
83
84cpp_quote("")
85cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(GETPROPERTYSTOREFLAGS)")
86
87cpp_quote("")
88[object, uuid (fc0ca0a7-c316-4fd2-9031-3e628e6d4f23)]
89interface IObjectWithPropertyKey : IUnknown {
90  HRESULT SetPropertyKey ([in] REFPROPERTYKEY key);
91  HRESULT GetPropertyKey ([out] PROPERTYKEY *pkey);
92}
93
94cpp_quote("")
95typedef [v1_enum] enum PKA_FLAGS {
96  PKA_SET,
97  PKA_APPEND,
98  PKA_DELETE
99} PKA_FLAGS;
100
101cpp_quote("")
102[uuid (f917bc8a-1bba-4478-a245-1bde03eb9431), object, pointer_default (unique)]
103interface IPropertyChange : IObjectWithPropertyKey {
104  HRESULT ApplyToPropVariant ([in] REFPROPVARIANT propvarIn,[out] PROPVARIANT *ppropvarOut);
105}
106
107cpp_quote("")
108[uuid (380f5cad-1b5e-42f2-805d-637fd392d31e), object, pointer_default (unique)]
109interface IPropertyChangeArray : IUnknown {
110  HRESULT GetCount ([out] UINT *pcOperations);
111  HRESULT GetAt ([in] UINT iIndex,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
112  HRESULT InsertAt ([in] UINT iIndex,[in] IPropertyChange *ppropChange);
113  HRESULT Append ([in] IPropertyChange *ppropChange);
114  HRESULT AppendOrReplace ([in] IPropertyChange *ppropChange);
115  HRESULT RemoveAt ([in] UINT iIndex);
116  HRESULT IsKeyInArray ([in] REFPROPERTYKEY key);
117}
118
119cpp_quote("")
120[uuid (c8e2d566-186e-4d49-bf41-6909ead56acc), object, pointer_default (unique)]
121interface IPropertyStoreCapabilities : IUnknown {
122  HRESULT IsPropertyWritable ([in] REFPROPERTYKEY key);
123}
124
125cpp_quote("")
126[uuid (3017056d-9a91-4e90-937d-746c72abbf4f), object, pointer_default (unique)]
127interface IPropertyStoreCache : IPropertyStore {
128  typedef [v1_enum] enum PSC_STATE {
129    PSC_NORMAL = 0,
130    PSC_NOTINSOURCE = 1,
131    PSC_DIRTY = 2,
132    PSC_READONLY = 3
133  } PSC_STATE;
134
135cpp_quote("")
136  HRESULT GetState ([in] REFPROPERTYKEY key,[out] PSC_STATE *pstate);
137  HRESULT GetValueAndState ([in] REFPROPERTYKEY key,[out] PROPVARIANT *ppropvar,[out] PSC_STATE *pstate);
138  HRESULT SetState ([in] REFPROPERTYKEY key,[in] PSC_STATE state);
139  HRESULT SetValueAndState ([in] REFPROPERTYKEY key,[in, unique] const PROPVARIANT *ppropvar,[in] PSC_STATE state);
140}
141
142cpp_quote("")
143[uuid (11e1fbf9-2d56-4a6b-8db3-7cd193a471f2), object, pointer_default (unique)]
144interface IPropertyEnumType : IUnknown {
145  typedef [v1_enum] enum PROPENUMTYPE {
146    PET_DISCRETEVALUE = 0,
147    PET_RANGEDVALUE = 1,
148    PET_DEFAULTVALUE = 2,
149    PET_ENDRANGE = 3
150  } PROPENUMTYPE;
151
152cpp_quote("")
153  HRESULT GetEnumType ([out] PROPENUMTYPE *penumtype);
154  HRESULT GetValue ([out] PROPVARIANT *ppropvar);
155  HRESULT GetRangeMinValue ([out] PROPVARIANT *ppropvarMin);
156  HRESULT GetRangeSetValue ([out] PROPVARIANT *ppropvarSet);
157  HRESULT GetDisplayText ([out] LPWSTR *ppszDisplay);
158}
159
160cpp_quote("")
161[uuid (9b6e051c-5ddd-4321-9070-fe2acb55e794), object, pointer_default (unique)]
162interface IPropertyEnumType2 : IPropertyEnumType {
163  HRESULT GetImageReference ([out] LPWSTR *ppszImageRes);
164}
165
166cpp_quote("")
167[uuid (a99400f4-3d84-4557-94ba-1242fb2cc9a6), object, pointer_default (unique)]
168interface IPropertyEnumTypeList : IUnknown {
169  HRESULT GetCount ([out] UINT *pctypes);
170  HRESULT GetAt ([in] UINT itype,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
171  HRESULT GetConditionAt ([in] UINT nIndex,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
172  HRESULT FindMatchingIndex ([in] REFPROPVARIANT propvarCmp,[out] UINT *pnIndex);
173}
174
175cpp_quote("")
176[uuid (6f79d558-3e96-4549-a1d1-7d75d2288814), object, pointer_default (unique)]
177interface IPropertyDescription : IUnknown {
178  typedef [v1_enum] enum PROPDESC_TYPE_FLAGS {
179    PDTF_DEFAULT = 0x00000000,
180    PDTF_MULTIPLEVALUES = 0x00000001,
181    PDTF_ISINNATE = 0x00000002,
182    PDTF_ISGROUP = 0x00000004,
183    PDTF_CANGROUPBY = 0x00000008,
184    PDTF_CANSTACKBY = 0x00000010,
185    PDTF_ISTREEPROPERTY = 0x00000020,
186    PDTF_INCLUDEINFULLTEXTQUERY = 0x00000040,
187    PDTF_ISVIEWABLE = 0x00000080,
188    PDTF_ISQUERYABLE = 0x00000100,
189    PDTF_CANBEPURGED = 0x00000200,
190    PDTF_SEARCHRAWVALUE = 0x00000400,
191    PDTF_ISSYSTEMPROPERTY = 0x80000000,
192    PDTF_MASK_ALL = 0x800007ff
193  } PROPDESC_TYPE_FLAGS;
194cpp_quote("")
195  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_TYPE_FLAGS)")
196
197cpp_quote("")
198  typedef [v1_enum] enum PROPDESC_VIEW_FLAGS {
199    PDVF_DEFAULT = 0x00000000,
200    PDVF_CENTERALIGN = 0x00000001,
201    PDVF_RIGHTALIGN = 0x00000002,
202    PDVF_BEGINNEWGROUP = 0x00000004,
203    PDVF_FILLAREA = 0x00000008,
204    PDVF_SORTDESCENDING = 0x00000010,
205    PDVF_SHOWONLYIFPRESENT = 0x00000020,
206    PDVF_SHOWBYDEFAULT = 0x00000040,
207    PDVF_SHOWINPRIMARYLIST = 0x00000080,
208    PDVF_SHOWINSECONDARYLIST = 0x00000100,
209    PDVF_HIDELABEL = 0x00000200,
210    PDVF_HIDDEN = 0x00000800,
211    PDVF_CANWRAP = 0x00001000,
212    PDVF_MASK_ALL = 0x00001bff
213  } PROPDESC_VIEW_FLAGS;
214cpp_quote("")
215  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_VIEW_FLAGS)")
216
217cpp_quote("")
218  typedef [v1_enum] enum PROPDESC_DISPLAYTYPE {
219    PDDT_STRING = 0,
220    PDDT_NUMBER = 1,
221    PDDT_BOOLEAN = 2,
222    PDDT_DATETIME = 3,
223    PDDT_ENUMERATED = 4,
224  } PROPDESC_DISPLAYTYPE;
225
226cpp_quote("")
227  typedef [v1_enum] enum PROPDESC_GROUPING_RANGE {
228    PDGR_DISCRETE = 0,
229    PDGR_ALPHANUMERIC = 1,
230    PDGR_SIZE = 2,
231    PDGR_DYNAMIC = 3,
232    PDGR_DATE = 4,
233    PDGR_PERCENT = 5,
234    PDGR_ENUMERATED = 6
235  } PROPDESC_GROUPING_RANGE;
236
237cpp_quote("")
238  typedef [v1_enum] enum PROPDESC_FORMAT_FLAGS {
239    PDFF_DEFAULT = 0x00000000,
240    PDFF_PREFIXNAME = 0x00000001,
241    PDFF_FILENAME = 0x00000002,
242    PDFF_ALWAYSKB = 0x00000004,
243    PDFF_RESERVED_RIGHTTOLEFT = 0x00000008,
244    PDFF_SHORTTIME = 0x00000010,
245    PDFF_LONGTIME = 0x00000020,
246    PDFF_HIDETIME = 0x00000040,
247    PDFF_SHORTDATE = 0x00000080,
248    PDFF_LONGDATE = 0x00000100,
249    PDFF_HIDEDATE = 0x00000200,
250    PDFF_RELATIVEDATE = 0x00000400,
251    PDFF_USEEDITINVITATION = 0x00000800,
252    PDFF_READONLY = 0x00001000,
253    PDFF_NOAUTOREADINGORDER = 0x00002000
254  } PROPDESC_FORMAT_FLAGS;
255cpp_quote("")
256  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_FORMAT_FLAGS)")
257
258cpp_quote("")
259  typedef [v1_enum] enum PROPDESC_SORTDESCRIPTION {
260    PDSD_GENERAL = 0,
261    PDSD_A_Z = 1,
262    PDSD_LOWEST_HIGHEST = 2,
263    PDSD_SMALLEST_BIGGEST = 3,
264    PDSD_OLDEST_NEWEST = 4
265  } PROPDESC_SORTDESCRIPTION;
266
267cpp_quote("")
268  typedef [v1_enum] enum PROPDESC_RELATIVEDESCRIPTION_TYPE {
269    PDRDT_GENERAL = 0,
270    PDRDT_DATE = 1,
271    PDRDT_SIZE = 2,
272    PDRDT_COUNT = 3,
273    PDRDT_REVISION = 4,
274    PDRDT_LENGTH = 5,
275    PDRDT_DURATION = 6,
276    PDRDT_SPEED = 7,
277    PDRDT_RATE = 8,
278    PDRDT_RATING = 9,
279    PDRDT_PRIORITY = 10
280  } PROPDESC_RELATIVEDESCRIPTION_TYPE;
281
282cpp_quote("")
283  typedef [v1_enum] enum PROPDESC_AGGREGATION_TYPE {
284    PDAT_DEFAULT = 0,
285    PDAT_FIRST = 1,
286    PDAT_SUM = 2,
287    PDAT_AVERAGE = 3,
288    PDAT_DATERANGE = 4,
289    PDAT_UNION = 5,
290    PDAT_MAX = 6,
291    PDAT_MIN = 7
292  } PROPDESC_AGGREGATION_TYPE;
293
294cpp_quote("")
295  typedef [v1_enum] enum PROPDESC_CONDITION_TYPE {
296    PDCOT_NONE = 0,
297    PDCOT_STRING = 1,
298    PDCOT_SIZE = 2,
299    PDCOT_DATETIME = 3,
300    PDCOT_BOOLEAN = 4,
301    PDCOT_NUMBER = 5
302  } PROPDESC_CONDITION_TYPE;
303
304cpp_quote("")
305  HRESULT GetPropertyKey ([out] PROPERTYKEY *pkey);
306  HRESULT GetCanonicalName ([out, string] LPWSTR *ppszName);
307  HRESULT GetPropertyType ([out] VARTYPE *pvartype);
308  HRESULT GetDisplayName ([out, string] LPWSTR *ppszName);
309  HRESULT GetEditInvitation ([out, string] LPWSTR *ppszInvite);
310  HRESULT GetTypeFlags ([in] PROPDESC_TYPE_FLAGS mask,[out] PROPDESC_TYPE_FLAGS *ppdtFlags);
311  HRESULT GetViewFlags ([out] PROPDESC_VIEW_FLAGS *ppdvFlags);
312  HRESULT GetDefaultColumnWidth ([out] UINT *pcxChars);
313  HRESULT GetDisplayType ([out] PROPDESC_DISPLAYTYPE *pdisplaytype);
314  HRESULT GetColumnState ([out] SHCOLSTATEF *pcsFlags);
315  HRESULT GetGroupingRange ([out] PROPDESC_GROUPING_RANGE *pgr);
316  HRESULT GetRelativeDescriptionType ([out] PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);
317  HRESULT GetRelativeDescription ([in] REFPROPVARIANT propvar1,[in] REFPROPVARIANT propvar2,[out, string] LPWSTR *ppszDesc1,[out, string] LPWSTR *ppszDesc2);
318  HRESULT GetSortDescription ([out] PROPDESC_SORTDESCRIPTION *psd);
319  HRESULT GetSortDescriptionLabel ([in] BOOL fDescending,[out, string] LPWSTR *ppszDescription);
320  HRESULT GetAggregationType ([out] PROPDESC_AGGREGATION_TYPE *paggtype);
321  HRESULT GetConditionType ([out] PROPDESC_CONDITION_TYPE *pcontype,[out] CONDITION_OPERATION *popDefault);
322  HRESULT GetEnumTypeList ([in] REFIID riid,[out, iid_is (riid)] void **ppv);
323  [local] HRESULT CoerceToCanonicalValue ([in, out] PROPVARIANT *ppropvar);
324  [call_as (CoerceToCanonicalValue)] HRESULT RemoteCoerceToCanonicalValue ([in] REFPROPVARIANT propvar,[out] PROPVARIANT *ppropvar);
325  HRESULT FormatForDisplay ([in] REFPROPVARIANT propvar,[in] PROPDESC_FORMAT_FLAGS pdfFlags,[out, string] LPWSTR *ppszDisplay);
326  HRESULT IsValueCanonical ([in] REFPROPVARIANT propvar);
327}
328
329cpp_quote("")
330[uuid (57d2eded-5062-400e-b107-5dae79fe57a6), object, pointer_default (unique)]
331interface IPropertyDescription2 : IPropertyDescription {
332  HRESULT GetImageReferenceForValue ([in] REFPROPVARIANT propvar,[out, string] LPWSTR *ppszImageRes);
333}
334
335cpp_quote("")
336[uuid (f67104fc-2af9-46fd-b32d-243c1404f3d1), object, pointer_default (unique)]
337interface IPropertyDescriptionAliasInfo : IPropertyDescription {
338  HRESULT GetSortByAlias ([in] REFIID riid,[out, iid_is (riid)] void **ppv);
339  HRESULT GetAdditionalSortByAliases ([in] REFIID riid,[out, iid_is (riid)] void **ppv);
340};
341
342cpp_quote("")
343[uuid (078f91bd-29a2-440f-924e-46a291524520), object, pointer_default (unique)]
344interface IPropertyDescriptionSearchInfo : IPropertyDescription {
345  typedef [v1_enum] enum PROPDESC_SEARCHINFO_FLAGS {
346    PDSIF_DEFAULT = 0x00000000,
347    PDSIF_ININVERTEDINDEX = 0x00000001,
348    PDSIF_ISCOLUMN = 0x00000002,
349    PDSIF_ISCOLUMNSPARSE = 0x00000004,
350    PDSIF_ALWAYSINCLUDE = 0x00000008,
351    PDSIF_USEFORTYPEAHEAD = 0x00000010,
352  } PROPDESC_SEARCHINFO_FLAGS;
353cpp_quote("")
354  cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS)")
355
356cpp_quote("")
357  typedef [v1_enum] enum PROPDESC_COLUMNINDEX_TYPE {
358    PDCIT_NONE = 0,
359    PDCIT_ONDISK = 1,
360    PDCIT_INMEMORY = 2,
361    PDCIT_ONDEMAND = 3,
362    PDCIT_ONDISKALL = 4,
363    PDCIT_ONDISKVECTOR = 5
364  } PROPDESC_COLUMNINDEX_TYPE;
365cpp_quote("")
366  HRESULT GetSearchInfoFlags ([out] PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags);
367  HRESULT GetColumnIndexType ([out] PROPDESC_COLUMNINDEX_TYPE *ppdciType);
368  HRESULT GetProjectionString ([out] LPWSTR *ppszProjection);
369  HRESULT GetMaxSize ([out] UINT *pcbMaxSize);
370};
371
372cpp_quote("")
373[uuid (507393f4-2a3d-4a60-b59e-d9c75716c2dd), object, pointer_default (unique)]
374interface IPropertyDescriptionRelatedPropertyInfo : IPropertyDescription {
375  HRESULT GetRelatedProperty ([in] LPCWSTR pszRelationshipName,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
376}
377
378cpp_quote("")
379typedef [v1_enum] enum PROPDESC_ENUMFILTER {
380  PDEF_ALL = 0,
381  PDEF_SYSTEM = 1,
382  PDEF_NONSYSTEM = 2,
383  PDEF_VIEWABLE = 3,
384  PDEF_QUERYABLE = 4,
385  PDEF_INFULLTEXTQUERY= 5,
386  PDEF_COLUMN = 6
387} PROPDESC_ENUMFILTER;
388
389cpp_quote("")
390[uuid (ca724e8a-c3e6-442b-88a4-6fb0db8035a3), object, pointer_default (unique)]
391interface IPropertySystem : IUnknown {
392  HRESULT GetPropertyDescription ([in] REFPROPERTYKEY propkey,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
393  HRESULT GetPropertyDescriptionByName ([in, string] LPCWSTR pszCanonicalName,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
394  HRESULT GetPropertyDescriptionListFromString ([in, string] LPCWSTR pszPropList,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
395  HRESULT EnumeratePropertyDescriptions ([in] PROPDESC_ENUMFILTER filterOn,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
396  HRESULT FormatForDisplay ([in] REFPROPERTYKEY key,[in] REFPROPVARIANT propvar,[in] PROPDESC_FORMAT_FLAGS pdff,[out, string, size_is (cchText)] LPWSTR pszText,[in, range (0, 0x8000)] DWORD cchText);
397  HRESULT FormatForDisplayAlloc ([in] REFPROPERTYKEY key,[in] REFPROPVARIANT propvar,[in] PROPDESC_FORMAT_FLAGS pdff,[out, string] LPWSTR *ppszDisplay);
398  HRESULT RegisterPropertySchema ([in, string] LPCWSTR pszPath);
399  HRESULT UnregisterPropertySchema ([in, string] LPCWSTR pszPath);
400  HRESULT RefreshPropertySchema ();
401}
402
403cpp_quote("")
404[uuid (1f9fc1d0-c39b-4b26-817f-011967d3440e), object, pointer_default (unique)]
405interface IPropertyDescriptionList : IUnknown {
406  HRESULT GetCount ([out] UINT *pcElem);
407  HRESULT GetAt ([in] UINT iElem,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
408}
409
410cpp_quote("")
411[uuid (bc110b6d-57e8-4148-a9c6-91015ab2f3a5), object, pointer_default (unique)]
412interface IPropertyStoreFactory : IUnknown {
413  HRESULT GetPropertyStore ([in] GETPROPERTYSTOREFLAGS flags,[in, unique] IUnknown *pUnkFactory,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
414  HRESULT GetPropertyStoreForKeys ([in, unique] const PROPERTYKEY *rgKeys,[in] UINT cKeys,[in] GETPROPERTYSTOREFLAGS flags,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
415}
416
417cpp_quote("")
418[uuid (40d4577f-e237-4bdb-bd69-58f089431b6a), object, pointer_default (unique)]
419interface IDelayedPropertyStoreFactory : IPropertyStoreFactory {
420  HRESULT GetDelayedPropertyStore ([in] GETPROPERTYSTOREFLAGS flags,[in] DWORD dwStoreId,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
421}
422
423cpp_quote("")
424[v1_enum] enum _PERSIST_SPROPSTORE_FLAGS {
425  FPSPS_DEFAULT = 0x00000000,
426  FPSPS_READONLY = 0x00000001,
427  FPSPS_TREAT_NEW_VALUES_AS_DIRTY = 0x00000002,
428};
429
430cpp_quote("")
431typedef int PERSIST_SPROPSTORE_FLAGS;
432typedef struct tagSERIALIZEDPROPSTORAGE SERIALIZEDPROPSTORAGE;
433typedef SERIALIZEDPROPSTORAGE *PUSERIALIZEDPROPSTORAGE;
434typedef const SERIALIZEDPROPSTORAGE *PCUSERIALIZEDPROPSTORAGE;
435
436cpp_quote("")
437[uuid (e318ad57-0aa0-450f-aca5-6fab7103d917), pointer_default (unique), local]
438interface IPersistSerializedPropStorage : IUnknown {
439  HRESULT SetFlags ([in] PERSIST_SPROPSTORE_FLAGS flags);
440  HRESULT SetPropertyStorage ([in] PCUSERIALIZEDPROPSTORAGE psps,[in] DWORD cb);
441  HRESULT GetPropertyStorage ([out] SERIALIZEDPROPSTORAGE **ppsps,[out] DWORD *pcb);
442}
443
444cpp_quote("")
445[uuid (77effa68-4f98-4366-ba72-573b3d880571), pointer_default (unique), local]
446interface IPersistSerializedPropStorage2 : IPersistSerializedPropStorage {
447  HRESULT GetPropertyStorageSize ([out] DWORD *pcb);
448  HRESULT GetPropertyStorageBuffer ([out] SERIALIZEDPROPSTORAGE *psps,[in] DWORD cb,[out] DWORD *pcbWritten);
449}
450
451cpp_quote("")
452[uuid (fa955fd9-38be-4879-a6ce-824cf52d609f), object, pointer_default (unique)]
453interface IPropertySystemChangeNotify : IUnknown {
454  HRESULT SchemaRefreshed ();
455}
456
457cpp_quote("")
458[uuid (75121952-e0d0-43e5-9380-1d80483acf72), pointer_default (unique)]
459interface ICreateObject : IUnknown {
460  HRESULT CreateObject ([in] REFCLSID clsid,[in, unique] IUnknown *pUnkOuter,[in] REFIID riid,[out, iid_is (riid)] void **ppv);
461};
462
463cpp_quote("")
464cpp_quote("#define PKEY_PIDSTR_MAX 10")
465cpp_quote("#define GUIDSTRING_MAX (39)")
466cpp_quote("#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)")
467
468cpp_quote("")
469cpp_quote("PSSTDAPI PSCoerceToCanonicalValue(REFPROPERTYKEY key, PROPVARIANT *ppropvar);")
470cpp_quote("PSSTDAPI PSCreateAdapterFromPropertyStore(IPropertyStore *pps, REFIID riid, void **ppv);")
471cpp_quote("PSSTDAPI PSCreateDelayedMultiplexPropertyStore(GETPROPERTYSTOREFLAGS flags, IDelayedPropertyStoreFactory *pdpsf, const DWORD *rgStoreIds, DWORD cStores, REFIID riid, void **ppv);")
472cpp_quote("PSSTDAPI PSCreateMemoryPropertyStore(REFIID riid, void **ppv);")
473cpp_quote("PSSTDAPI PSCreateMultiplexPropertyStore(IUnknown **prgpunkStores, DWORD cStores, REFIID riid, void **ppv);")
474cpp_quote("PSSTDAPI PSCreatePropertyChangeArray(const PROPERTYKEY *rgpropkey, const PKA_FLAGS *rgflags, const PROPVARIANT *rgpropvar, UINT cChanges, REFIID riid, void **ppv);")
475cpp_quote("PSSTDAPI PSCreatePropertyStoreFromObject(IUnknown *punk, DWORD grfMode, REFIID riid, void **ppv);")
476cpp_quote("PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage(IPropertySetStorage *ppss, DWORD grfMode, REFIID riid, void **ppv);")
477cpp_quote("PSSTDAPI PSCreateSimplePropertyChange(PKA_FLAGS flags, REFPROPERTYKEY key, REFPROPVARIANT propvar, REFIID riid, void **ppv);")
478cpp_quote("PSSTDAPI PSEnumeratePropertyDescriptions(PROPDESC_ENUMFILTER filterOn, REFIID riid, void **ppv);")
479cpp_quote("PSSTDAPI PSFormatForDisplay(REFPROPERTYKEY propkey, REFPROPVARIANT propvar, PROPDESC_FORMAT_FLAGS pdfFlags, LPWSTR pwszText, DWORD cchText);")
480cpp_quote("PSSTDAPI PSFormatForDisplayAlloc(REFPROPERTYKEY key, REFPROPVARIANT propvar, PROPDESC_FORMAT_FLAGS pdff, PWSTR *ppszDisplay);")
481cpp_quote("PSSTDAPI PSFormatPropertyValue(IPropertyStore *pps, IPropertyDescription *ppd, PROPDESC_FORMAT_FLAGS pdff, LPWSTR *ppszDisplay);")
482cpp_quote("PSSTDAPI PSGetImageReferenceForValue(REFPROPERTYKEY propkey, REFPROPVARIANT propvar, PWSTR *ppszImageRes);")
483cpp_quote("PSSTDAPI PSGetItemPropertyHandler(IUnknown *punkItem, BOOL fReadWrite, REFIID riid, void **ppv);")
484cpp_quote("PSSTDAPI PSGetItemPropertyHandlerWithCreateObject(IUnknown *punkItem, BOOL fReadWrite, IUnknown *punkCreateObject, REFIID riid, void **ppv);")
485cpp_quote("PSSTDAPI PSGetNamedPropertyFromPropertyStorage(PCUSERIALIZEDPROPSTORAGE psps, DWORD cb, LPCWSTR pszName, PROPVARIANT *ppropvar);")
486cpp_quote("PSSTDAPI PSGetNameFromPropertyKey(REFPROPERTYKEY propkey, PWSTR *ppszCanonicalName);")
487cpp_quote("PSSTDAPI PSGetPropertyDescription(REFPROPERTYKEY propkey, REFIID riid, void **ppv);")
488cpp_quote("PSSTDAPI PSGetPropertyDescriptionByName(LPCWSTR pszCanonicalName, REFIID riid, void **ppv);")
489cpp_quote("PSSTDAPI PSGetPropertyDescriptionListFromString(LPCWSTR pszPropList, REFIID riid, void **ppv);")
490cpp_quote("PSSTDAPI PSGetPropertyFromPropertyStorage(PCUSERIALIZEDPROPSTORAGE psps, DWORD cb, REFPROPERTYKEY rpkey, PROPVARIANT *ppropvar);")
491cpp_quote("PSSTDAPI PSGetPropertyKeyFromName(PCWSTR pszName, PROPERTYKEY *ppropkey);")
492cpp_quote("PSSTDAPI PSGetPropertySystem(REFIID riid, void **ppv);")
493cpp_quote("PSSTDAPI PSGetPropertyValue(IPropertyStore *pps, IPropertyDescription *ppd, PROPVARIANT *ppropvar);")
494cpp_quote("PSSTDAPI PSLookupPropertyHandlerCLSID(PCWSTR pszFilePath, CLSID *pclsid);")
495cpp_quote("PSSTDAPI PSPropertyBag_Delete(IPropertyBag *propBag, LPCWSTR propName);")
496cpp_quote("PSSTDAPI PSPropertyBag_ReadBOOL(IPropertyBag *propBag, LPCWSTR propName, BOOL *value);")
497cpp_quote("PSSTDAPI PSPropertyBag_ReadBSTR(IPropertyBag *propBag, LPCWSTR propName, BSTR *value);")
498cpp_quote("PSSTDAPI PSPropertyBag_ReadDWORD(IPropertyBag *propBag, LPCWSTR propName, DWORD *value);")
499cpp_quote("PSSTDAPI PSPropertyBag_ReadGUID(IPropertyBag *propBag, LPCWSTR propName, GUID *value);")
500cpp_quote("PSSTDAPI PSPropertyBag_ReadInt(IPropertyBag *propBag, LPCWSTR propName, INT *value);")
501cpp_quote("PSSTDAPI PSPropertyBag_ReadLONG(IPropertyBag *propBag, LPCWSTR propName, LONG *value);")
502cpp_quote("PSSTDAPI PSPropertyBag_ReadPOINTL(IPropertyBag *propBag, LPCWSTR propName, POINTL *value);")
503cpp_quote("PSSTDAPI PSPropertyBag_ReadPOINTS(IPropertyBag *propBag, LPCWSTR propName, POINTS *value);")
504cpp_quote("PSSTDAPI PSPropertyBag_ReadPropertyKey(IPropertyBag *propBag, LPCWSTR propName, PROPERTYKEY *value);")
505cpp_quote("PSSTDAPI PSPropertyBag_ReadRECTL(IPropertyBag *propBag, LPCWSTR propName, RECTL *value);")
506cpp_quote("PSSTDAPI PSPropertyBag_ReadSHORT(IPropertyBag *propBag, LPCWSTR propName, SHORT *value);")
507cpp_quote("PSSTDAPI PSPropertyBag_ReadStr(IPropertyBag *propBag, LPCWSTR propName, LPWSTR value, int characterCount);")
508cpp_quote("PSSTDAPI PSPropertyBag_ReadStrAlloc(IPropertyBag *propBag, LPCWSTR propName, PWSTR *value);")
509cpp_quote("PSSTDAPI PSPropertyBag_ReadStream(IPropertyBag *propBag, LPCWSTR propName, IStream **value);")
510cpp_quote("PSSTDAPI PSPropertyBag_ReadType(IPropertyBag *propBag, LPCWSTR propName, VARIANT *var, VARTYPE type);")
511cpp_quote("PSSTDAPI PSPropertyBag_ReadULONGLONG(IPropertyBag *propBag, LPCWSTR propName, ULONGLONG *value);")
512cpp_quote("PSSTDAPI PSPropertyBag_ReadUnknown(IPropertyBag *propBag, LPCWSTR propName, REFIID riid, void **ppv);")
513cpp_quote("PSSTDAPI PSPropertyBag_WriteBOOL(IPropertyBag *propBag, LPCWSTR propName, BOOL value);")
514cpp_quote("PSSTDAPI PSPropertyBag_WriteBSTR(IPropertyBag *propBag, LPCWSTR propName, BSTR value);")
515cpp_quote("PSSTDAPI PSPropertyBag_WriteDWORD(IPropertyBag *propBag, LPCWSTR propName, DWORD value);")
516cpp_quote("PSSTDAPI PSPropertyBag_WriteGUID(IPropertyBag *propBag, LPCWSTR propName, const GUID *value);")
517cpp_quote("PSSTDAPI PSPropertyBag_WriteInt(IPropertyBag *propBag, LPCWSTR propName, INT value);")
518cpp_quote("PSSTDAPI PSPropertyBag_WriteLONG(IPropertyBag *propBag, LPCWSTR propName, LONG value);")
519cpp_quote("PSSTDAPI PSPropertyBag_WritePOINTL(IPropertyBag *propBag, LPCWSTR propName, const POINTL *value);")
520cpp_quote("PSSTDAPI PSPropertyBag_WritePOINTS(IPropertyBag *propBag, LPCWSTR propName, const POINTS *value);")
521cpp_quote("PSSTDAPI PSPropertyBag_WritePropertyKey(IPropertyBag *propBag, LPCWSTR propName, REFPROPERTYKEY value);")
522cpp_quote("PSSTDAPI PSPropertyBag_WriteRECTL(IPropertyBag *propBag, LPCWSTR propName, const RECTL *value);")
523cpp_quote("PSSTDAPI PSPropertyBag_WriteSHORT(IPropertyBag *propBag, LPCWSTR propName, SHORT value);")
524cpp_quote("PSSTDAPI PSPropertyBag_WriteStr(IPropertyBag *propBag, LPCWSTR propName, LPCWSTR value);")
525cpp_quote("PSSTDAPI PSPropertyBag_WriteStream(IPropertyBag *propBag, LPCWSTR propName, IStream *value);")
526cpp_quote("PSSTDAPI PSPropertyBag_WriteULONGLONG(IPropertyBag *propBag, LPCWSTR propName, ULONGLONG value);")
527cpp_quote("PSSTDAPI PSPropertyBag_WriteUnknown(IPropertyBag *propBag, LPCWSTR propName, IUnknown *punk);")
528cpp_quote("PSSTDAPI PSPropertyKeyFromString(LPCWSTR pszString, PROPERTYKEY *pkey);")
529cpp_quote("PSSTDAPI PSRefreshPropertySchema(void);")
530cpp_quote("PSSTDAPI PSRegisterPropertySchema(PCWSTR pszPath);")
531cpp_quote("PSSTDAPI PSSetPropertyValue(IPropertyStore *pps, IPropertyDescription *ppd, REFPROPVARIANT propvar);")
532cpp_quote("PSSTDAPI PSStringFromPropertyKey(REFPROPERTYKEY pkey, LPWSTR psz, UINT cch);")
533cpp_quote("PSSTDAPI PSUnregisterPropertySchema(PCWSTR pszPath);")
534
535cpp_quote("")
536[uuid (2cda3294-6c4f-4020-b161-27c530c81fa6), lcid (0x0000), version (1.0)]
537library PropSysObjects {
538  [uuid (9a02e012-6303-4e1e-b9a1-630f802592c5)] coclass InMemoryPropertyStore { interface IPropertyStore; }
539  [uuid (b8967f85-58ae-4f46-9fb2-5d7904798f4b)] coclass PropertySystem { interface IPropertySystem; }
540};
541cpp_quote("#endif")
542