xref: /reactos/sdk/include/psdk/propsys.idl (revision 7eba2742)
1c2c66affSColin Finck/*
2c2c66affSColin Finck * system property interfaces
3c2c66affSColin Finck *
4c2c66affSColin Finck * Copyright 2009 Maarten Lankhorst
5c2c66affSColin Finck *
6c2c66affSColin Finck * This library is free software; you can redistribute it and/or
7c2c66affSColin Finck * modify it under the terms of the GNU Lesser General Public
8c2c66affSColin Finck * License as published by the Free Software Foundation; either
9c2c66affSColin Finck * version 2.1 of the License, or (at your option) any later version.
10c2c66affSColin Finck *
11c2c66affSColin Finck * This library is distributed in the hope that it will be useful,
12c2c66affSColin Finck * but WITHOUT ANY WARRANTY; without even the implied warranty of
13c2c66affSColin Finck * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14c2c66affSColin Finck * Lesser General Public License for more details.
15c2c66affSColin Finck *
16c2c66affSColin Finck * You should have received a copy of the GNU Lesser General Public
17c2c66affSColin Finck * License along with this library; if not, write to the Free Software
18c2c66affSColin Finck * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19c2c66affSColin Finck *
20c2c66affSColin Finck */
21c2c66affSColin Finck
22c2c66affSColin Finck
23c2c66affSColin Finckimport "objidl.idl";
24c2c66affSColin Finckimport "oleidl.idl";
25c2c66affSColin Finckimport "ocidl.idl";
26c2c66affSColin Finckimport "shtypes.idl";
27c2c66affSColin Finckimport "structuredquerycondition.idl";
28c2c66affSColin Finck
29c2c66affSColin Finckcpp_quote("#ifndef PSSTDAPI")
30c2c66affSColin Finckcpp_quote("#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE")
31c2c66affSColin Finckcpp_quote("#endif")
32c2c66affSColin Finck
33c2c66affSColin Finckcpp_quote("#if 0")
34c2c66affSColin Fincktypedef PROPERTYKEY *REFPROPERTYKEY;
35c2c66affSColin Finckcpp_quote("#endif")
36c2c66affSColin Finckcpp_quote("#include <propkeydef.h>")
37c2c66affSColin Finck
38c2c66affSColin Finck[
39c2c66affSColin Finck    uuid(b7d14566-0509-4cce-a71f-0a554233bd9b),
40c2c66affSColin Finck    object,
41c2c66affSColin Finck    pointer_default(unique)
42c2c66affSColin Finck]
43c2c66affSColin Finckinterface IInitializeWithFile : IUnknown
44c2c66affSColin Finck{
45c2c66affSColin Finck    HRESULT Initialize(
46c2c66affSColin Finck        [in,string] LPCWSTR pszFilePath,
47c2c66affSColin Finck        [in] DWORD grfMode
48c2c66affSColin Finck    );
49c2c66affSColin Finck}
50c2c66affSColin Finck
51c2c66affSColin Finck[
52c2c66affSColin Finck    uuid(b824b49d-22ac-4161-ac8a-9916e8fa3f7f),
53c2c66affSColin Finck    object,
54c2c66affSColin Finck    pointer_default(unique)
55c2c66affSColin Finck]
56c2c66affSColin Finckinterface IInitializeWithStream : IUnknown
57c2c66affSColin Finck{
58c2c66affSColin Finck    [local] HRESULT Initialize(
59c2c66affSColin Finck        [in] IStream *pstream,
60c2c66affSColin Finck        [in] DWORD grfMode
61c2c66affSColin Finck    );
62c2c66affSColin Finck}
63c2c66affSColin Finck
64c2c66affSColin Finck[
65c2c66affSColin Finck    uuid(886d8eeb-8cf2-4446-8d02-cdba1dbdcf99),
66c2c66affSColin Finck    object,
67c2c66affSColin Finck    pointer_default(unique)
68c2c66affSColin Finck]
69c2c66affSColin Finckinterface IPropertyStore : IUnknown
70c2c66affSColin Finck{
71c2c66affSColin Finck    HRESULT GetCount(
72c2c66affSColin Finck        [out] DWORD *cProps
73c2c66affSColin Finck    );
74c2c66affSColin Finck    HRESULT GetAt(
75c2c66affSColin Finck        [in] DWORD iProp,
76c2c66affSColin Finck        [out] PROPERTYKEY *pkey
77c2c66affSColin Finck    );
78c2c66affSColin Finck    HRESULT GetValue(
79c2c66affSColin Finck        [in] REFPROPERTYKEY key,
80c2c66affSColin Finck        [out] PROPVARIANT *pv
81c2c66affSColin Finck    );
82c2c66affSColin Finck    HRESULT SetValue(
83c2c66affSColin Finck        [in] REFPROPERTYKEY key,
84c2c66affSColin Finck        [in] REFPROPVARIANT propvar
85c2c66affSColin Finck    );
86c2c66affSColin Finck    HRESULT Commit(void);
87c2c66affSColin Finck}
88c2c66affSColin Finck
89c2c66affSColin Fincktypedef IPropertyStore *LPPROPERTYSTORE;
90c2c66affSColin Finck
91c2c66affSColin Finck[
92c2c66affSColin Finck    uuid(71604b0f-97b0-4764-8577-2f13e98a1422),
93c2c66affSColin Finck    object,
94c2c66affSColin Finck    pointer_default(unique)
95c2c66affSColin Finck]
96c2c66affSColin Finckinterface INamedPropertyStore : IUnknown
97c2c66affSColin Finck{
98c2c66affSColin Finck    HRESULT GetNamedValue(
99c2c66affSColin Finck        [in,string] LPCWSTR pszName,
100c2c66affSColin Finck        [out] PROPVARIANT *ppropvar
101c2c66affSColin Finck    );
102c2c66affSColin Finck    HRESULT SetNamedValue(
103c2c66affSColin Finck        [in,string] LPCWSTR pszName,
104c2c66affSColin Finck        [in] REFPROPVARIANT propvar
105c2c66affSColin Finck    );
106c2c66affSColin Finck    HRESULT GetNameCount(
107c2c66affSColin Finck        [out] DWORD *pdwCount
108c2c66affSColin Finck    );
109c2c66affSColin Finck    HRESULT GetNameAt(
110c2c66affSColin Finck        [in] DWORD iProp,
111c2c66affSColin Finck        [out] BSTR *pbstrName
112c2c66affSColin Finck    );
113c2c66affSColin Finck}
114c2c66affSColin Finck
115c2c66affSColin Fincktypedef [v1_enum] enum GETPROPERTYSTOREFLAGS
116c2c66affSColin Finck{
117c2c66affSColin Finck    GPS_DEFAULT = 0x00,
118c2c66affSColin Finck    GPS_HANDLERPROPERTIESONLY = 0x01,
119c2c66affSColin Finck    GPS_READWRITE = 0x02,
120c2c66affSColin Finck    GPS_TEMPORARY = 0x04,
121c2c66affSColin Finck    GPS_FASTPROPERTIESONLY = 0x08,
122c2c66affSColin Finck    GPS_OPENSLOWITEM = 0x10,
123c2c66affSColin Finck    GPS_DELAYCREATION = 0x20,
124c2c66affSColin Finck    GPS_BESTEFFORT = 0x40,
125c2c66affSColin Finck    GPS_NO_OPLOCK = 0x80,
126c2c66affSColin Finck    GPS_MASK_VALID = 0xff
127c2c66affSColin Finck} GETPROPERTYSTOREFLAGS;
128c2c66affSColin Finck
129c2c66affSColin Finckcpp_quote("DEFINE_ENUM_FLAG_OPERATORS(GETPROPERTYSTOREFLAGS)")
130c2c66affSColin Finck
131c2c66affSColin Finck[
132c2c66affSColin Finck    uuid(fc0ca0a7-c316-4fd2-9031-3e628e6d4f23),
133c2c66affSColin Finck    object
134c2c66affSColin Finck]
135c2c66affSColin Finckinterface IObjectWithPropertyKey : IUnknown
136c2c66affSColin Finck{
137c2c66affSColin Finck    HRESULT SetPropertyKey(
138c2c66affSColin Finck        [in] REFPROPERTYKEY key
139c2c66affSColin Finck    );
140c2c66affSColin Finck    HRESULT GetPropertyKey(
141c2c66affSColin Finck        [out] PROPERTYKEY *key
142c2c66affSColin Finck    );
143c2c66affSColin Finck}
144c2c66affSColin Finck
145c2c66affSColin Fincktypedef [v1_enum] enum PKA_FLAGS
146c2c66affSColin Finck{
147c2c66affSColin Finck    PKA_SET,
148c2c66affSColin Finck    PKA_APPEND,
149c2c66affSColin Finck    PKA_DELETE
150c2c66affSColin Finck} PKA_FLAGS;
151c2c66affSColin Finck
152c2c66affSColin Finck[
153c2c66affSColin Finck    uuid(f917bc8a-1bba-4478-a245-1bde03eb9431),
154c2c66affSColin Finck    object,
155c2c66affSColin Finck    pointer_default(unique)
156c2c66affSColin Finck]
157c2c66affSColin Finckinterface IPropertyChange : IObjectWithPropertyKey
158c2c66affSColin Finck{
159c2c66affSColin Finck    HRESULT ApplyToPropVariant([in] REFPROPVARIANT propvarin, [out] PROPVARIANT *propvarout);
160c2c66affSColin Finck}
161c2c66affSColin Finck
162c2c66affSColin Finck[
163c2c66affSColin Finck    uuid(380f5cad-1b5e-42f2-805d-637fd392d31e),
164c2c66affSColin Finck    object,
165c2c66affSColin Finck    pointer_default(unique)
166c2c66affSColin Finck]
167c2c66affSColin Finckinterface IPropertyChangeArray : IUnknown
168c2c66affSColin Finck{
169c2c66affSColin Finck    HRESULT GetCount(
170c2c66affSColin Finck        [out] UINT *pcOperations
171c2c66affSColin Finck    );
172c2c66affSColin Finck    HRESULT GetAt(
173c2c66affSColin Finck        [in] UINT iIndex,
174c2c66affSColin Finck        [in] REFIID riid,
175c2c66affSColin Finck        [out, iid_is(riid)] void **ppv
176c2c66affSColin Finck    );
177c2c66affSColin Finck    HRESULT InsertAt(
178c2c66affSColin Finck        [in] UINT iIndex,
179c2c66affSColin Finck        [in] IPropertyChange *ppropChange
180c2c66affSColin Finck    );
181c2c66affSColin Finck    HRESULT Append(
182c2c66affSColin Finck        [in] IPropertyChange *ppropChange
183c2c66affSColin Finck    );
184c2c66affSColin Finck    HRESULT AppendOrReplace(
185c2c66affSColin Finck        [in] IPropertyChange *ppropChange
186c2c66affSColin Finck    );
187c2c66affSColin Finck    HRESULT RemoveAt(
188c2c66affSColin Finck        [in] UINT iIndex
189c2c66affSColin Finck    );
190c2c66affSColin Finck    HRESULT IsKeyInArray(
191c2c66affSColin Finck        [in] REFPROPERTYKEY key
192c2c66affSColin Finck    );
193c2c66affSColin Finck}
194c2c66affSColin Finck
195c2c66affSColin Finck[
196c2c66affSColin Finck    uuid(c8e2d566-186e-4d49-bf41-6909ead56acc),
197c2c66affSColin Finck    object,
198c2c66affSColin Finck    pointer_default(unique)
199c2c66affSColin Finck]
200c2c66affSColin Finckinterface IPropertyStoreCapabilities : IUnknown
201c2c66affSColin Finck{
202c2c66affSColin Finck    HRESULT IsPropertyWritable(
203c2c66affSColin Finck        [in] REFPROPERTYKEY key
204c2c66affSColin Finck    );
205c2c66affSColin Finck}
206c2c66affSColin Finck
207c2c66affSColin Finck[
208c2c66affSColin Finck    uuid(3017056d-9a91-4e90-937d-746c72abbf4f),
209c2c66affSColin Finck    object,
210c2c66affSColin Finck    pointer_default(unique)
211c2c66affSColin Finck]
212c2c66affSColin Finckinterface IPropertyStoreCache : IPropertyStore
213c2c66affSColin Finck{
214c2c66affSColin Finck    typedef [v1_enum] enum PSC_STATE
215c2c66affSColin Finck    {
216c2c66affSColin Finck        PSC_NORMAL = 0,
217c2c66affSColin Finck        PSC_NOTINSOURCE,
218c2c66affSColin Finck        PSC_DIRTY,
219c2c66affSColin Finck        PSC_READONLY
220c2c66affSColin Finck    } PSC_STATE;
221c2c66affSColin Finck
222c2c66affSColin Finck    HRESULT GetState(
223c2c66affSColin Finck        [in] REFPROPERTYKEY key,
224c2c66affSColin Finck        [out] PSC_STATE *pstate
225c2c66affSColin Finck    );
226c2c66affSColin Finck    HRESULT GetValueAndState(
227c2c66affSColin Finck        [in] REFPROPERTYKEY key,
228c2c66affSColin Finck        [out] PROPVARIANT *ppropvar,
229c2c66affSColin Finck        [out] PSC_STATE *pstate
230c2c66affSColin Finck    );
231c2c66affSColin Finck    HRESULT SetState(
232c2c66affSColin Finck        [in] REFPROPERTYKEY key,
233c2c66affSColin Finck        [in] PSC_STATE pstate
234c2c66affSColin Finck    );
235c2c66affSColin Finck    HRESULT SetValueAndState(
236c2c66affSColin Finck        [in] REFPROPERTYKEY key,
237c2c66affSColin Finck        [in, unique] const PROPVARIANT *ppropvar,
238c2c66affSColin Finck        [in] PSC_STATE state
239c2c66affSColin Finck    );
240c2c66affSColin Finck}
241c2c66affSColin Finck
242c2c66affSColin Finck[
243c2c66affSColin Finck    uuid(11e1fbf9-2d56-4a6b-8db3-7cd193a471f2),
244c2c66affSColin Finck    object,
245c2c66affSColin Finck    pointer_default(unique)
246c2c66affSColin Finck]
247c2c66affSColin Finckinterface IPropertyEnumType : IUnknown
248c2c66affSColin Finck{
249c2c66affSColin Finck    typedef [v1_enum] enum PROPENUMTYPE
250c2c66affSColin Finck    {
251c2c66affSColin Finck        PET_DISCRETEVALUE = 0,
252c2c66affSColin Finck        PET_RANGEDVALUE,
253c2c66affSColin Finck        PET_DEFAULTVALUE,
254c2c66affSColin Finck        PET_ENDRANGE
255c2c66affSColin Finck    } PROPENUMTYPE;
256c2c66affSColin Finck
257c2c66affSColin Finck    HRESULT GetEnumType(
258c2c66affSColin Finck        [out] PROPENUMTYPE *penumtype
259c2c66affSColin Finck    );
260c2c66affSColin Finck    HRESULT GetValue(
261c2c66affSColin Finck        [out] PROPVARIANT *ppropvar
262c2c66affSColin Finck    );
263c2c66affSColin Finck    HRESULT GetRangeMinValue(
264c2c66affSColin Finck        [out] PROPVARIANT *ppropvar
265c2c66affSColin Finck    );
266c2c66affSColin Finck    HRESULT GetRangeSetValue(
267c2c66affSColin Finck        [out] PROPVARIANT *ppropvar
268c2c66affSColin Finck    );
269c2c66affSColin Finck    HRESULT GetDisplayText(
270c2c66affSColin Finck        [out] LPWSTR *ppszDisplay
271c2c66affSColin Finck    );
272c2c66affSColin Finck}
273c2c66affSColin Finck
274c2c66affSColin Finck[
275c2c66affSColin Finck    uuid(9b6e051c-5ddd-4321-9070-fe2acb55e974),
276c2c66affSColin Finck    object,
277c2c66affSColin Finck    pointer_default(unique)
278c2c66affSColin Finck]
279c2c66affSColin Finckinterface IPropertyEnumType2 : IPropertyEnumType
280c2c66affSColin Finck{
281c2c66affSColin Finck    HRESULT GetImageReference(
282c2c66affSColin Finck        [out] LPWSTR *ppszImageRes
283c2c66affSColin Finck    );
284c2c66affSColin Finck}
285c2c66affSColin Finck
286c2c66affSColin Finck[
287c2c66affSColin Finck    uuid(a99400f4-3d84-4557-94ba-1242fb2cc9a6),
288c2c66affSColin Finck    object,
289c2c66affSColin Finck    pointer_default(unique)
290c2c66affSColin Finck]
291c2c66affSColin Finckinterface IPropertyEnumTypeList : IUnknown
292c2c66affSColin Finck{
293c2c66affSColin Finck    HRESULT GetCount(
294c2c66affSColin Finck        [out] UINT *pctypes
295c2c66affSColin Finck    );
296c2c66affSColin Finck    HRESULT GetAt(
297c2c66affSColin Finck        [in] UINT itype,
298c2c66affSColin Finck        [in] REFIID riid,
299c2c66affSColin Finck        [out, iid_is(riid)] void **ppv
300c2c66affSColin Finck    );
301c2c66affSColin Finck    HRESULT GetConditionAt(
302c2c66affSColin Finck        [in] UINT nIndex,
303c2c66affSColin Finck        [in] REFIID riid,
304c2c66affSColin Finck        [out, iid_is(riid)] void **ppv
305c2c66affSColin Finck    );
306c2c66affSColin Finck    HRESULT FindMatchingIndex(
307c2c66affSColin Finck        [in] REFPROPVARIANT propvarCmp,
308c2c66affSColin Finck        [out] UINT *pnIndex
309c2c66affSColin Finck    );
310c2c66affSColin Finck}
311c2c66affSColin Finck
312c2c66affSColin Finck[
313c2c66affSColin Finck    uuid(6f79d558-3e96-4549-a1d1-7d75d2288814),
314c2c66affSColin Finck    object,
315c2c66affSColin Finck    pointer_default(unique)
316c2c66affSColin Finck]
317c2c66affSColin Finckinterface IPropertyDescription : IUnknown
318c2c66affSColin Finck{
319c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_TYPE_FLAGS
320c2c66affSColin Finck    {
321c2c66affSColin Finck        PDTF_DEFAULT = 0,
322c2c66affSColin Finck        PDTF_MULTIPLEVALUES = 0x001,
323c2c66affSColin Finck        PDTF_ISINNATE = 0x002,
324c2c66affSColin Finck        PDTF_ISGROUP = 0x004,
325c2c66affSColin Finck        PDTF_CANGROUPBY = 0x008,
326c2c66affSColin Finck        PDTF_CANSTACKBY = 0x010,
327c2c66affSColin Finck        PDTF_ISTREEPROPERTY = 0x020,
328c2c66affSColin Finck        PDTF_INCLUDEINFULLTEXTQUERY = 0x040,
329c2c66affSColin Finck        PDTF_ISVIEWABLE = 0x080,
330c2c66affSColin Finck        PDTF_ISQUERYABLE = 0x100,
331c2c66affSColin Finck        PDTF_CANBEPURGED = 0x200,
332c2c66affSColin Finck        PDTF_SEARCHRAWVALUE = 0x400,
333c2c66affSColin Finck        PDTF_ISSYSTEMPROPERTY = 0x80000000,
334c2c66affSColin Finck        PDTF_MASK_ALL = 0x800007ff
335c2c66affSColin Finck    } PROPDESC_TYPE_FLAGS;
336c2c66affSColin Finck    cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_TYPE_FLAGS)")
337c2c66affSColin Finck
338c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_VIEW_FLAGS
339c2c66affSColin Finck    {
340c2c66affSColin Finck        PDVF_DEFAULT = 0x0000,
341c2c66affSColin Finck        PDVF_CENTERALIGN = 0x0001,
342c2c66affSColin Finck        PDVF_RIGHTALIGN = 0x0002,
343c2c66affSColin Finck        PDVF_BEGINNEWGROUP = 0x0004,
344c2c66affSColin Finck        PDVF_FILLAREA = 0x0008,
345c2c66affSColin Finck        PDVF_SORTDESCENDING = 0x0010,
346c2c66affSColin Finck        PDVF_SHOWONLYIFPRESENT = 0x0020,
347c2c66affSColin Finck        PDVF_SHOWBYDEFAULT = 0x0040,
348c2c66affSColin Finck        PDVF_SHOWINPRIMARYLIST = 0x0080,
349c2c66affSColin Finck        PDVF_SHOWINSECONDARYLIST = 0x0100,
350c2c66affSColin Finck        PDVF_HIDELABEL = 0x0200,
351c2c66affSColin Finck        PDVF_HIDDEN = 0x0800,
352c2c66affSColin Finck        PDVF_CANWRAP = 0x1000,
353c2c66affSColin Finck        PDVF_MASK_ALL = 0x1bff
354c2c66affSColin Finck    } PROPDESC_VIEW_FLAGS;
355c2c66affSColin Finck    cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_VIEW_FLAGS)")
356c2c66affSColin Finck
357c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_DISPLAYTYPE
358c2c66affSColin Finck    {
359c2c66affSColin Finck        PDDT_STRING = 0,
360c2c66affSColin Finck        PDDT_NUMBER,
361c2c66affSColin Finck        PDDT_BOOLEAN,
362c2c66affSColin Finck        PDDT_DATETIME,
363c2c66affSColin Finck        PDDT_ENUMERATED
364c2c66affSColin Finck    } PROPDESC_DISPLAYTYPE;
365c2c66affSColin Finck
366c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_GROUPING_RANGE
367c2c66affSColin Finck    {
368c2c66affSColin Finck        PDGR_DISCRETE = 0,
369c2c66affSColin Finck        PDGR_ALPHANUMERIC,
370c2c66affSColin Finck        PDGR_SIZE,
371c2c66affSColin Finck        PDGR_DYNAMIC,
372c2c66affSColin Finck        PDGR_DATE,
373c2c66affSColin Finck        PDGR_PERCENT,
374c2c66affSColin Finck        PDGR_ENUMERATED
375c2c66affSColin Finck    } PROPDESC_GROUPING_RANGE;
376c2c66affSColin Finck
377c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_FORMAT_FLAGS
378c2c66affSColin Finck    {
379c2c66affSColin Finck        PDFF_DEFAULT = 0x0000,
380c2c66affSColin Finck        PDFF_PREFIXNAME = 0x0001,
381c2c66affSColin Finck        PDFF_FILENAME = 0x0002,
382c2c66affSColin Finck        PDFF_ALWAYSKB = 0x0004,
383c2c66affSColin Finck        PDFF_RESERVED_RIGHTTOLEFT = 0x0008,
384c2c66affSColin Finck        PDFF_SHORTTIME = 0x0010,
385c2c66affSColin Finck        PDFF_LONGTIME = 0x0020,
386c2c66affSColin Finck        PDFF_HIDETIME = 0x0040,
387c2c66affSColin Finck        PDFF_SHORTDATE = 0x0080,
388c2c66affSColin Finck        PDFF_LONGDATE = 0x0100,
389c2c66affSColin Finck        PDFF_HIDEDATE = 0x0200,
390c2c66affSColin Finck        PDFF_RELATIVEDATE = 0x0400,
391c2c66affSColin Finck        PDFF_USEEDITINVITATION = 0x0800,
392c2c66affSColin Finck        PDFF_READONLY = 0x1000,
393c2c66affSColin Finck        PDFF_NOAUTOREADINGORDER = 0x2000
394c2c66affSColin Finck    } PROPDESC_FORMAT_FLAGS;
395c2c66affSColin Finck    cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_FORMAT_FLAGS)")
396c2c66affSColin Finck
397c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_SORTDESCRIPTION
398c2c66affSColin Finck    {
399c2c66affSColin Finck        PDSD_GENERAL = 0,
400c2c66affSColin Finck        PDSD_A_Z,
401c2c66affSColin Finck        PDSD_LOWEST_HIGHEST,
402c2c66affSColin Finck        PDSD_SMALLEST_BIGGEST,
403c2c66affSColin Finck        PDSD_OLDEST_NEWEST
404c2c66affSColin Finck    } PROPDESC_SORTDESCRIPTION;
405c2c66affSColin Finck
406c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_RELATIVEDESCRIPTION_TYPE
407c2c66affSColin Finck    {
408c2c66affSColin Finck        PDRDT_GENERAL = 0,
409c2c66affSColin Finck        PDRDT_DATE,
410c2c66affSColin Finck        PDRDT_SIZE,
411c2c66affSColin Finck        PDRDT_COUNT,
412c2c66affSColin Finck        PDRDT_REVISION,
413c2c66affSColin Finck        PDRDT_LENGTH,
414c2c66affSColin Finck        PDRDT_DURATION,
415c2c66affSColin Finck        PDRDT_SPEED,
416c2c66affSColin Finck        PDRDT_RATE,
417c2c66affSColin Finck        PDRDT_RATING,
418c2c66affSColin Finck        PDRDT_PRIORITY
419c2c66affSColin Finck    } PROPDESC_RELATIVEDESCRIPTION_TYPE;
420c2c66affSColin Finck
421c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_AGGREGATION_TYPE
422c2c66affSColin Finck    {
423c2c66affSColin Finck        PDAT_DEFAULT = 0,
424c2c66affSColin Finck        PDAT_FIRST,
425c2c66affSColin Finck        PDAT_SUM,
426c2c66affSColin Finck        PDAT_AVERAGE,
427c2c66affSColin Finck        PDAT_DATERANGE,
428c2c66affSColin Finck        PDAT_UNION,
429c2c66affSColin Finck        PDAT_MAX,
430c2c66affSColin Finck        PDAT_MIN
431c2c66affSColin Finck    } PROPDESC_AGGREGATION_TYPE;
432c2c66affSColin Finck
433c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_CONDITION_TYPE
434c2c66affSColin Finck    {
435c2c66affSColin Finck        PDCOT_NONE = 0,
436c2c66affSColin Finck        PDCOT_STRING,
437c2c66affSColin Finck        PDCOT_SIZE,
438c2c66affSColin Finck        PDCOT_DATETIME,
439c2c66affSColin Finck        PDCOT_BOOLEAN,
440c2c66affSColin Finck        PDCOT_NUMBER
441c2c66affSColin Finck    } PROPDESC_CONDITION_TYPE;
442c2c66affSColin Finck
443c2c66affSColin Finck    HRESULT GetPropertyKey(
444c2c66affSColin Finck        [out] PROPERTYKEY *pkey
445c2c66affSColin Finck    );
446c2c66affSColin Finck    HRESULT GetCanonicalName(
447c2c66affSColin Finck        [out, string] LPWSTR *ppszName
448c2c66affSColin Finck    );
449c2c66affSColin Finck    HRESULT GetPropertyType(
450c2c66affSColin Finck        [out] VARTYPE *pvartype
451c2c66affSColin Finck    );
452c2c66affSColin Finck    HRESULT GetDisplayName(
453c2c66affSColin Finck        [out, string] LPWSTR *ppszName
454c2c66affSColin Finck    );
455c2c66affSColin Finck    HRESULT GetEditInvitation(
456c2c66affSColin Finck        [out, string] LPWSTR *ppszName
457c2c66affSColin Finck    );
458c2c66affSColin Finck    HRESULT GetTypeFlags(
459c2c66affSColin Finck        [in] PROPDESC_TYPE_FLAGS mask,
460c2c66affSColin Finck        [out] PROPDESC_TYPE_FLAGS *ppdtFlags
461c2c66affSColin Finck    );
462c2c66affSColin Finck    HRESULT GetViewFlags(
463c2c66affSColin Finck        [out] PROPDESC_VIEW_FLAGS *ppdvFlags
464c2c66affSColin Finck    );
465c2c66affSColin Finck    HRESULT GetDefaultColumnWidth(
466c2c66affSColin Finck        [out] UINT *pcxChars
467c2c66affSColin Finck    );
468c2c66affSColin Finck    HRESULT GetDisplayType(
469c2c66affSColin Finck        [out] PROPDESC_DISPLAYTYPE *pdisplaytype
470c2c66affSColin Finck    );
471c2c66affSColin Finck    HRESULT GetColumnState(
472c2c66affSColin Finck        [out] SHCOLSTATEF *pcsFlags
473c2c66affSColin Finck    );
474c2c66affSColin Finck    HRESULT GetGroupingRange(
475c2c66affSColin Finck        [out] PROPDESC_GROUPING_RANGE *psd
476c2c66affSColin Finck    );
477c2c66affSColin Finck    HRESULT GetRelativeDescriptionType(
478c2c66affSColin Finck        [out] PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt
479c2c66affSColin Finck    );
480c2c66affSColin Finck    HRESULT GetRelativeDescription(
481c2c66affSColin Finck        [in] REFPROPVARIANT propvar1,
482c2c66affSColin Finck        [in] REFPROPVARIANT propvar2,
483c2c66affSColin Finck        [out,string] LPWSTR *ppszDesc1,
484c2c66affSColin Finck        [out,string] LPWSTR *ppszDesc2
485c2c66affSColin Finck    );
486c2c66affSColin Finck    HRESULT GetSortDescription(
487c2c66affSColin Finck        [out] PROPDESC_SORTDESCRIPTION *psd
488c2c66affSColin Finck    );
489c2c66affSColin Finck    HRESULT GetSortDescriptionLabel(
490c2c66affSColin Finck        [in] BOOL fDescending,
491c2c66affSColin Finck        [out,string] LPWSTR *ppszDescription
492c2c66affSColin Finck    );
493c2c66affSColin Finck    HRESULT GetAggregationType(
494c2c66affSColin Finck        [out] PROPDESC_AGGREGATION_TYPE *paggtype
495c2c66affSColin Finck    );
496c2c66affSColin Finck    HRESULT GetConditionType(
497c2c66affSColin Finck        [out] PROPDESC_CONDITION_TYPE *pcontype,
498c2c66affSColin Finck        [out] CONDITION_OPERATION *popDefault
499c2c66affSColin Finck    );
500c2c66affSColin Finck    HRESULT GetEnumTypeList(
501c2c66affSColin Finck        [in] REFIID riid,
502c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
503c2c66affSColin Finck    );
504c2c66affSColin Finck    [local] HRESULT CoerceToCanonicalValue(
505c2c66affSColin Finck        [in,out] PROPVARIANT *propvar
506c2c66affSColin Finck    );
507c2c66affSColin Finck    [call_as(CoerceToCanonicalValue)] HRESULT RemoteCoerceToCanonicalValue(
508c2c66affSColin Finck        [in] REFPROPVARIANT propvar,
509c2c66affSColin Finck        [out] PROPVARIANT *ppropvar
510c2c66affSColin Finck    );
511c2c66affSColin Finck    HRESULT FormatForDisplay(
512c2c66affSColin Finck        [in] REFPROPVARIANT propvar,
513c2c66affSColin Finck        [in] PROPDESC_FORMAT_FLAGS flags,
514c2c66affSColin Finck        [out,string] LPWSTR *ppszDisplay
515c2c66affSColin Finck    );
516c2c66affSColin Finck    HRESULT IsValueCanonical(
517c2c66affSColin Finck        [in] REFPROPVARIANT propvar
518c2c66affSColin Finck    );
519c2c66affSColin Finck}
520c2c66affSColin Finck
521c2c66affSColin Finck[
522c2c66affSColin Finck    uuid(57d2eded-5062-400e-b107-5dae79fe57a6),
523c2c66affSColin Finck    object,
524c2c66affSColin Finck    pointer_default(unique)
525c2c66affSColin Finck]
526c2c66affSColin Finckinterface IPropertyDescription2 : IPropertyDescription
527c2c66affSColin Finck{
528c2c66affSColin Finck    HRESULT GetImageReferenceForValue(
529c2c66affSColin Finck        [in] REFPROPVARIANT propvar,
530c2c66affSColin Finck        [out,string] LPWSTR *ppszImageRes
531c2c66affSColin Finck    );
532c2c66affSColin Finck}
533c2c66affSColin Finck
534c2c66affSColin Finck[
535c2c66affSColin Finck    uuid(f67104fc-2af9-46fd-b32d-243c1404f3d1),
536c2c66affSColin Finck    object,
537c2c66affSColin Finck    pointer_default(unique)
538c2c66affSColin Finck]
539c2c66affSColin Finckinterface IPropertyDescriptionAliasInfo : IPropertyDescription
540c2c66affSColin Finck{
541c2c66affSColin Finck    HRESULT GetSortByAlias(
542c2c66affSColin Finck        [in] REFIID riid,
543c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
544c2c66affSColin Finck    );
545c2c66affSColin Finck    HRESULT GetAdditionalSortByAliases(
546c2c66affSColin Finck        [in] REFIID riid,
547c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
548c2c66affSColin Finck    );
549c2c66affSColin Finck}
550c2c66affSColin Finck
551c2c66affSColin Finck[
552c2c66affSColin Finck    uuid(078f91bd-29a2-440f-924e-46a291524520),
553c2c66affSColin Finck    object,
554c2c66affSColin Finck    pointer_default(unique)
555c2c66affSColin Finck]
556c2c66affSColin Finckinterface IPropertyDescriptionSearchInfo : IPropertyDescription
557c2c66affSColin Finck{
558c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_SEARCHINFO_FLAGS
559c2c66affSColin Finck    {
560c2c66affSColin Finck        PDSIF_DEFAULT = 0x0,
561c2c66affSColin Finck        PDSIF_ININVERTEDINDEX = 0x1,
562c2c66affSColin Finck        PDSIF_ISCOLUMN = 0x2,
563c2c66affSColin Finck        PDSIF_ISCOLUMNSPARSE = 0x4,
564c2c66affSColin Finck        PDSIF_ALWAYSINCLUDE = 0x8,
565c2c66affSColin Finck    } PROPDESC_SEARCHINFO_FLAGS;
566c2c66affSColin Finck    cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS)")
567c2c66affSColin Finck
568c2c66affSColin Finck    typedef [v1_enum] enum PROPDESC_COLUMNINDEX_TYPE
569c2c66affSColin Finck    {
570c2c66affSColin Finck        PDCIT_NONE = 0,
571c2c66affSColin Finck        PDCIT_ONDISK,
572c2c66affSColin Finck        PDCIT_INMEMORY,
573c2c66affSColin Finck        PDCIT_ONDEMAND,
574c2c66affSColin Finck        PDCIT_ONDISKALL,
575c2c66affSColin Finck        PDCIT_ONDISKVECTOR
576c2c66affSColin Finck    } PROPDESC_COLUMNINDEX_TYPE;
577c2c66affSColin Finck
578c2c66affSColin Finck    HRESULT GetSearchInfoFlags(
579c2c66affSColin Finck        [out] PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags
580c2c66affSColin Finck    );
581c2c66affSColin Finck    HRESULT GetColumnIndexType(
582c2c66affSColin Finck        [out] PROPDESC_COLUMNINDEX_TYPE *ppdciType
583c2c66affSColin Finck    );
584c2c66affSColin Finck    HRESULT GetProjectionString(
585c2c66affSColin Finck        [out] LPWSTR *ppszProjection
586c2c66affSColin Finck    );
587c2c66affSColin Finck    HRESULT GetMaxSize(
588c2c66affSColin Finck        [out] UINT *pcbMaxSize
589c2c66affSColin Finck    );
590c2c66affSColin Finck}
591c2c66affSColin Finck
592c2c66affSColin Finck[
593c2c66affSColin Finck    uuid(507393f4-2a3d-4a60-b59e-d9c75716c2dd),
594c2c66affSColin Finck    object,
595c2c66affSColin Finck    pointer_default(unique)
596c2c66affSColin Finck]
597c2c66affSColin Finckinterface IPropertyDescriptionRelatedPropertyInfo : IPropertyDescription
598c2c66affSColin Finck{
599c2c66affSColin Finck    HRESULT GetRelatedProperty(
600c2c66affSColin Finck        [in] LPCWSTR ppszRelationshipName,
601c2c66affSColin Finck        [in] REFIID riid,
602c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
603c2c66affSColin Finck    );
604c2c66affSColin Finck}
605c2c66affSColin Finck
606c2c66affSColin Fincktypedef [v1_enum] enum PROPDESC_ENUMFILTER
607c2c66affSColin Finck{
608c2c66affSColin Finck    PDEF_ALL = 0,
609c2c66affSColin Finck    PDEF_SYSTEM,
610c2c66affSColin Finck    PDEF_NONSYSTEM,
611c2c66affSColin Finck    PDEF_VIEWABLE,
612c2c66affSColin Finck    PDEF_QUERYABLE,
613c2c66affSColin Finck    PDEF_INFULLTEXTQUERY,
614c2c66affSColin Finck    PDEF_COLUMN
615c2c66affSColin Finck} PROPDESC_ENUMFILTER;
616c2c66affSColin Finck
617c2c66affSColin Finck[
618c2c66affSColin Finck    uuid(ca724e8a-c3e6-442b-88a4-6fb0db8035a3),
619c2c66affSColin Finck    object,
620c2c66affSColin Finck    pointer_default(unique)
621c2c66affSColin Finck]
622c2c66affSColin Finckinterface IPropertySystem : IUnknown
623c2c66affSColin Finck{
624c2c66affSColin Finck    HRESULT GetPropertyDescription(
625c2c66affSColin Finck        [in] REFPROPERTYKEY propkey,
626c2c66affSColin Finck        [in] REFIID riid,
627c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
628c2c66affSColin Finck    );
629c2c66affSColin Finck    HRESULT GetPropertyDescriptionByName(
630c2c66affSColin Finck        [in,string] LPCWSTR pszCanonicalName,
631c2c66affSColin Finck        [in] REFIID riid,
632c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
633c2c66affSColin Finck    );
634c2c66affSColin Finck    HRESULT GetPropertyDescriptionListFromString(
635c2c66affSColin Finck        [in,string] LPCWSTR pszPropList,
636c2c66affSColin Finck        [in] REFIID riid,
637c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
638c2c66affSColin Finck    );
639c2c66affSColin Finck    HRESULT EnumeratePropertyDescriptions(
640c2c66affSColin Finck        [in] PROPDESC_ENUMFILTER filterOn,
641c2c66affSColin Finck        [in] REFIID riid,
642c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
643c2c66affSColin Finck    );
644c2c66affSColin Finck    HRESULT FormatForDisplay(
645c2c66affSColin Finck        [in] REFPROPERTYKEY key,
646c2c66affSColin Finck        [in] REFPROPVARIANT propvar,
647c2c66affSColin Finck        [in] PROPDESC_FORMAT_FLAGS pdff,
648c2c66affSColin Finck        [out,string,size_is(cchText)] LPWSTR pszText,
649c2c66affSColin Finck        [in] DWORD cchText
650c2c66affSColin Finck    );
651c2c66affSColin Finck    HRESULT FormatForDisplayAlloc(
652c2c66affSColin Finck        [in] REFPROPERTYKEY key,
653c2c66affSColin Finck        [in] REFPROPVARIANT propvar,
654c2c66affSColin Finck        [in] PROPDESC_FORMAT_FLAGS pdff,
655c2c66affSColin Finck        [out,string] LPWSTR *pszText
656c2c66affSColin Finck    );
657c2c66affSColin Finck    HRESULT RegisterPropertySchema(
658c2c66affSColin Finck        [in,string] LPCWSTR pszPath
659c2c66affSColin Finck    );
660c2c66affSColin Finck    HRESULT UnregisterPropertySchema(
661c2c66affSColin Finck        [in,string] LPCWSTR pszPath
662c2c66affSColin Finck    );
663c2c66affSColin Finck    HRESULT RefreshPropertySchema(void);
664c2c66affSColin Finck}
665c2c66affSColin Finck
666c2c66affSColin Finck[
667c2c66affSColin Finck    uuid(1f9fc1d0-c39b-4b26-817f-011967d3440e),
668c2c66affSColin Finck    object,
669c2c66affSColin Finck    pointer_default(unique)
670c2c66affSColin Finck]
671c2c66affSColin Finckinterface IPropertyDescriptionList : IUnknown
672c2c66affSColin Finck{
673c2c66affSColin Finck    HRESULT GetCount(
674c2c66affSColin Finck        [out] UINT *pcelem
675c2c66affSColin Finck    );
676c2c66affSColin Finck    HRESULT GetAt(
677c2c66affSColin Finck        [in] UINT iElem,
678c2c66affSColin Finck        [in] REFIID riid,
679c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
680c2c66affSColin Finck    );
681c2c66affSColin Finck}
682c2c66affSColin Finck
683c2c66affSColin Finck[
684c2c66affSColin Finck    uuid(bc110b6d-57e8-4148-a9c6-91015ab2f3a5),
685c2c66affSColin Finck    object,
686c2c66affSColin Finck    pointer_default(unique)
687c2c66affSColin Finck]
688c2c66affSColin Finckinterface IPropertyStoreFactory : IUnknown
689c2c66affSColin Finck{
690c2c66affSColin Finck    HRESULT GetPropertyStore(
691c2c66affSColin Finck        [in] GETPROPERTYSTOREFLAGS flags,
692c2c66affSColin Finck        [in,unique] IUnknown *pUnkFactory,
693c2c66affSColin Finck        [in] REFIID riid,
694c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
695c2c66affSColin Finck    );
696c2c66affSColin Finck    HRESULT GetPropertyStoreForKeys(
697c2c66affSColin Finck        [in,unique] const PROPERTYKEY *rgKeys,
698c2c66affSColin Finck        [in] UINT cKeys,
699c2c66affSColin Finck        [in] GETPROPERTYSTOREFLAGS flags,
700c2c66affSColin Finck        [in] REFIID riid,
701c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
702c2c66affSColin Finck    );
703c2c66affSColin Finck}
704c2c66affSColin Finck
705c2c66affSColin Finck[
706c2c66affSColin Finck    uuid(40d4577f-e237-4bdb-bd69-58f089431b6a),
707c2c66affSColin Finck    object,
708c2c66affSColin Finck    pointer_default(unique)
709c2c66affSColin Finck]
710c2c66affSColin Finckinterface IDelayedPropertyStoreFactory : IPropertyStoreFactory
711c2c66affSColin Finck{
712c2c66affSColin Finck    HRESULT GetDelayedPropertyStore(
713c2c66affSColin Finck        [in] GETPROPERTYSTOREFLAGS flags,
714c2c66affSColin Finck        [in] DWORD dwStoreId,
715c2c66affSColin Finck        [in] REFIID riid,
716c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
717c2c66affSColin Finck    );
718c2c66affSColin Finck}
719c2c66affSColin Finck
720c2c66affSColin Finck[v1_enum] enum _PERSIST_SPROPSTORE_FLAGS
721c2c66affSColin Finck{
722c2c66affSColin Finck    FPSPS_DEFAULT = 0,
723c2c66affSColin Finck    FPSPS_READONLY = 1
724c2c66affSColin Finck};
725c2c66affSColin Fincktypedef int PERSIST_SPROPSTORE_FLAGS;
726c2c66affSColin Finck
727c2c66affSColin Fincktypedef struct tagSERIALIZEDROPSTORAGE SERIALIZEDPROPSTORAGE;
728c2c66affSColin Finck
729c2c66affSColin Finckcpp_quote("#if 0") /* Wine doesn't have __unaligned builtin, hack */
730c2c66affSColin Fincktypedef SERIALIZEDPROPSTORAGE *PUSERIALIZEDPROPSTORAGE;
731c2c66affSColin Fincktypedef const SERIALIZEDPROPSTORAGE *PCUSERIALIZEDPROPSTORAGE;
732c2c66affSColin Finckcpp_quote("#endif")
733c2c66affSColin Finckcpp_quote("typedef SERIALIZEDPROPSTORAGE UNALIGNED *PUSERIALIZEDPROPSTORAGE;")
734c2c66affSColin Finckcpp_quote("typedef const SERIALIZEDPROPSTORAGE UNALIGNED *PCUSERIALIZEDPROPSTORAGE;")
735c2c66affSColin Finck
736c2c66affSColin Finck[
737c2c66affSColin Finck    uuid(e318ad57-0aa0-450f-aca5-6fab7103d917),
738c2c66affSColin Finck    pointer_default(unique),
739c2c66affSColin Finck    local
740c2c66affSColin Finck]
741c2c66affSColin Finckinterface IPersistSerializedPropStorage : IUnknown
742c2c66affSColin Finck{
743c2c66affSColin Finck    HRESULT SetFlags(
744c2c66affSColin Finck        [in] PERSIST_SPROPSTORE_FLAGS flags
745c2c66affSColin Finck    );
746c2c66affSColin Finck    HRESULT SetPropertyStorage(
747c2c66affSColin Finck        [in] PCUSERIALIZEDPROPSTORAGE psps,
748c2c66affSColin Finck        [in] DWORD cb
749c2c66affSColin Finck    );
750c2c66affSColin Finck    HRESULT GetPropertyStorage(
751c2c66affSColin Finck        [out] SERIALIZEDPROPSTORAGE **psps,
752c2c66affSColin Finck        [out] DWORD *pcb
753c2c66affSColin Finck    );
754c2c66affSColin Finck}
755c2c66affSColin Finck
756c2c66affSColin Finck[
757c2c66affSColin Finck    uuid(77effa68-4f98-4366-ba72-573b3d880571),
758c2c66affSColin Finck    pointer_default(unique),
759c2c66affSColin Finck    local
760c2c66affSColin Finck]
761c2c66affSColin Finckinterface IPersistSerializedPropStorage2 : IPersistSerializedPropStorage
762c2c66affSColin Finck{
763c2c66affSColin Finck    HRESULT GetpropertyStorageSize(
764c2c66affSColin Finck        [out] DWORD *pcb
765c2c66affSColin Finck    );
766c2c66affSColin Finck    HRESULT GetPropertyStorageBuffer(
767c2c66affSColin Finck        [out] SERIALIZEDPROPSTORAGE *psps,
768c2c66affSColin Finck        [in] DWORD cb,
769c2c66affSColin Finck        [out] DWORD *pcbWritten
770c2c66affSColin Finck    );
771c2c66affSColin Finck}
772c2c66affSColin Finck
773c2c66affSColin Finck[
774c2c66affSColin Finck    uuid(fa955fd9-38be-4879-a6ce-824cf52d609f),
775c2c66affSColin Finck    object,
776c2c66affSColin Finck    pointer_default(unique)
777c2c66affSColin Finck]
778c2c66affSColin Finckinterface IPropertySystemChangeNotify : IUnknown
779c2c66affSColin Finck{
780c2c66affSColin Finck    HRESULT SchemaRefreshed(void);
781c2c66affSColin Finck}
782c2c66affSColin Finck
783c2c66affSColin Finck/* Interface for CoCreateInstance? */
784c2c66affSColin Finck[
785c2c66affSColin Finck    uuid(75121952-e0d0-43e5-9380-1d80483acf72),
786c2c66affSColin Finck    pointer_default(unique)
787c2c66affSColin Finck]
788c2c66affSColin Finckinterface ICreateObject : IUnknown
789c2c66affSColin Finck{
790c2c66affSColin Finck    HRESULT CreateObject(
791c2c66affSColin Finck        [in] REFCLSID clsid,
792c2c66affSColin Finck        [in,unique] IUnknown *pUnkOuter,
793c2c66affSColin Finck        [in] REFIID riid,
794c2c66affSColin Finck        [out,iid_is(riid)] void **ppv
795c2c66affSColin Finck    );
796c2c66affSColin Finck}
797c2c66affSColin Finck
798c2c66affSColin Finckcpp_quote("#define PKEY_PIDSTR_MAX 10")
799c2c66affSColin Finckcpp_quote("#define GUIDSTRING_MAX 39")
800c2c66affSColin Finckcpp_quote("#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)")
801c2c66affSColin Finck
802*7eba2742SAmine Khaldicpp_quote("HRESULT WINAPI PSCreateMemoryPropertyStore(REFIID,void **);")
803c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSStringFromPropertyKey(REFPROPERTYKEY,LPWSTR,UINT);")
804c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSPropertyKeyFromString(LPCWSTR,PROPERTYKEY*);")
805c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSGetPropertyDescription(REFPROPERTYKEY,REFIID,void **);")
806c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSGetPropertyDescriptionListFromString(LPCWSTR,REFIID,void **);")
807c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSRefreshPropertySchema(void);")
808c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSRegisterPropertySchema(LPCWSTR);")
809c2c66affSColin Finckcpp_quote("HRESULT WINAPI PSUnregisterPropertySchema(LPCWSTR);")
810c2c66affSColin Finck
811c2c66affSColin Finck/* TODO: Add remainder of the C api here */
812c2c66affSColin Finck
813c2c66affSColin Finck[
814c2c66affSColin Finck    uuid(2cda3294-6c4f-4020-b161-27c530c81fa6),
815c2c66affSColin Finck    lcid(0x0000),
816c2c66affSColin Finck    version(1.0)
817c2c66affSColin Finck]
818c2c66affSColin Fincklibrary PropSysObjects
819c2c66affSColin Finck{
820c2c66affSColin Finck    [uuid(9a02e012-6303-4e1e-b9a1-630f802592c5)] coclass InMemoryPropertyStore
821c2c66affSColin Finck    {
822c2c66affSColin Finck        interface IPropertyStore;
823c2c66affSColin Finck    }
824c2c66affSColin Finck    [uuid(b8967f86-58ae-4f96-9fb2-5d7904798f4b)] coclass PropertySystem
825c2c66affSColin Finck    {
826c2c66affSColin Finck        interface IPropertySystem;
827c2c66affSColin Finck    }
828c2c66affSColin Finck}
829