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