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