Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836/* * system property interfaces * * Copyright 2009 Maarten Lankhorst * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */import "objidl.idl";import "oleidl.idl";import "ocidl.idl";import "shtypes.idl";import "structuredquerycondition.idl";cpp_quote("#ifndef PSSTDAPI")cpp_quote("#ifdef _PROPSYS_")cpp_quote("#define PSSTDAPI STDAPI")cpp_quote("#define PSSTDAPI_(type) STDAPI_(type)")cpp_quote("#else")cpp_quote("#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE")cpp_quote("#define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE")cpp_quote("#endif")cpp_quote("#endif")cpp_quote("#if 0")typedef PROPERTYKEY *REFPROPERTYKEY;cpp_quote("#endif")cpp_quote("#include <propkeydef.h>")[ uuid(b7d14566-0509-4cce-a71f-0a554233bd9b), object, pointer_default(unique)]interface IInitializeWithFile : IUnknown{ HRESULT Initialize( [in,string] LPCWSTR pszFilePath, [in] DWORD grfMode );}[ uuid(b824b49d-22ac-4161-ac8a-9916e8fa3f7f), object, pointer_default(unique)]interface IInitializeWithStream : IUnknown{ [local] HRESULT Initialize( [in] IStream *pstream, [in] DWORD grfMode );}[ uuid(886d8eeb-8cf2-4446-8d02-cdba1dbdcf99), object, pointer_default(unique)]interface IPropertyStore : IUnknown{ HRESULT GetCount( [out] DWORD *cProps ); HRESULT GetAt( [in] DWORD iProp, [out] PROPERTYKEY *pkey ); HRESULT GetValue( [in] REFPROPERTYKEY key, [out] PROPVARIANT *pv ); HRESULT SetValue( [in] REFPROPERTYKEY key, [in] REFPROPVARIANT propvar ); HRESULT Commit(void);}typedef IPropertyStore *LPPROPERTYSTORE;[ uuid(71604b0f-97b0-4764-8577-2f13e98a1422), object, pointer_default(unique)]interface INamedPropertyStore : IUnknown{ HRESULT GetNamedValue( [in,string] LPCWSTR pszName, [out] PROPVARIANT *ppropvar ); HRESULT SetNamedValue( [in,string] LPCWSTR pszName, [in] REFPROPVARIANT propvar ); HRESULT GetNameCount( [out] DWORD *pdwCount ); HRESULT GetNameAt( [in] DWORD iProp, [out] BSTR *pbstrName );}typedef [v1_enum] enum GETPROPERTYSTOREFLAGS{ GPS_DEFAULT = 0x00, GPS_HANDLERPROPERTIESONLY = 0x01, GPS_READWRITE = 0x02, GPS_TEMPORARY = 0x04, GPS_FASTPROPERTIESONLY = 0x08, GPS_OPENSLOWITEM = 0x10, GPS_DELAYCREATION = 0x20, GPS_BESTEFFORT = 0x40, GPS_NO_OPLOCK = 0x80, GPS_MASK_VALID = 0xff} GETPROPERTYSTOREFLAGS;cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(GETPROPERTYSTOREFLAGS)")[ uuid(fc0ca0a7-c316-4fd2-9031-3e628e6d4f23), object]interface IObjectWithPropertyKey : IUnknown{ HRESULT SetPropertyKey( [in] REFPROPERTYKEY key ); HRESULT GetPropertyKey( [out] PROPERTYKEY *key );}typedef [v1_enum] enum PKA_FLAGS{ PKA_SET, PKA_APPEND, PKA_DELETE} PKA_FLAGS;[ uuid(f917bc8a-1bba-4478-a245-1bde03eb9431), object, pointer_default(unique)]interface IPropertyChange : IObjectWithPropertyKey{ HRESULT ApplyToPropVariant([in] REFPROPVARIANT propvarin, [out] PROPVARIANT *propvarout);}[ uuid(380f5cad-1b5e-42f2-805d-637fd392d31e), object, pointer_default(unique)]interface IPropertyChangeArray : IUnknown{ HRESULT GetCount( [out] UINT *pcOperations ); HRESULT GetAt( [in] UINT iIndex, [in] REFIID riid, [out, iid_is(riid)] void **ppv ); HRESULT InsertAt( [in] UINT iIndex, [in] IPropertyChange *ppropChange ); HRESULT Append( [in] IPropertyChange *ppropChange ); HRESULT AppendOrReplace( [in] IPropertyChange *ppropChange ); HRESULT RemoveAt( [in] UINT iIndex ); HRESULT IsKeyInArray( [in] REFPROPERTYKEY key );}[ uuid(c8e2d566-186e-4d49-bf41-6909ead56acc), object, pointer_default(unique)]interface IPropertyStoreCapabilities : IUnknown{ HRESULT IsPropertyWritable( [in] REFPROPERTYKEY key );}[ uuid(3017056d-9a91-4e90-937d-746c72abbf4f), object, pointer_default(unique)]interface IPropertyStoreCache : IPropertyStore{ typedef [v1_enum] enum PSC_STATE { PSC_NORMAL = 0, PSC_NOTINSOURCE, PSC_DIRTY, PSC_READONLY } PSC_STATE; HRESULT GetState( [in] REFPROPERTYKEY key, [out] PSC_STATE *pstate ); HRESULT GetValueAndState( [in] REFPROPERTYKEY key, [out] PROPVARIANT *ppropvar, [out] PSC_STATE *pstate ); HRESULT SetState( [in] REFPROPERTYKEY key, [in] PSC_STATE pstate ); HRESULT SetValueAndState( [in] REFPROPERTYKEY key, [in, unique] const PROPVARIANT *ppropvar, [in] PSC_STATE state );}[ uuid(11e1fbf9-2d56-4a6b-8db3-7cd193a471f2), object, pointer_default(unique)]interface IPropertyEnumType : IUnknown{ typedef [v1_enum] enum PROPENUMTYPE { PET_DISCRETEVALUE = 0, PET_RANGEDVALUE, PET_DEFAULTVALUE, PET_ENDRANGE } PROPENUMTYPE; HRESULT GetEnumType( [out] PROPENUMTYPE *penumtype ); HRESULT GetValue( [out] PROPVARIANT *ppropvar ); HRESULT GetRangeMinValue( [out] PROPVARIANT *ppropvar ); HRESULT GetRangeSetValue( [out] PROPVARIANT *ppropvar ); HRESULT GetDisplayText( [out] LPWSTR *ppszDisplay );}[ uuid(9b6e051c-5ddd-4321-9070-fe2acb55e794), object, pointer_default(unique)]interface IPropertyEnumType2 : IPropertyEnumType{ HRESULT GetImageReference( [out] LPWSTR *ppszImageRes );}[ uuid(a99400f4-3d84-4557-94ba-1242fb2cc9a6), object, pointer_default(unique)]interface IPropertyEnumTypeList : IUnknown{ HRESULT GetCount( [out] UINT *pctypes ); HRESULT GetAt( [in] UINT itype, [in] REFIID riid, [out, iid_is(riid)] void **ppv ); HRESULT GetConditionAt( [in] UINT nIndex, [in] REFIID riid, [out, iid_is(riid)] void **ppv ); HRESULT FindMatchingIndex( [in] REFPROPVARIANT propvarCmp, [out] UINT *pnIndex );}[ uuid(6f79d558-3e96-4549-a1d1-7d75d2288814), object, pointer_default(unique)]interface IPropertyDescription : IUnknown{ typedef [v1_enum] enum PROPDESC_TYPE_FLAGS { PDTF_DEFAULT = 0, PDTF_MULTIPLEVALUES = 0x001, PDTF_ISINNATE = 0x002, PDTF_ISGROUP = 0x004, PDTF_CANGROUPBY = 0x008, PDTF_CANSTACKBY = 0x010, PDTF_ISTREEPROPERTY = 0x020, PDTF_INCLUDEINFULLTEXTQUERY = 0x040, PDTF_ISVIEWABLE = 0x080, PDTF_ISQUERYABLE = 0x100, PDTF_CANBEPURGED = 0x200, PDTF_SEARCHRAWVALUE = 0x400, PDTF_ISSYSTEMPROPERTY = 0x80000000, PDTF_MASK_ALL = 0x800007ff } PROPDESC_TYPE_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_TYPE_FLAGS)") typedef [v1_enum] enum PROPDESC_VIEW_FLAGS { PDVF_DEFAULT = 0x0000, PDVF_CENTERALIGN = 0x0001, PDVF_RIGHTALIGN = 0x0002, PDVF_BEGINNEWGROUP = 0x0004, PDVF_FILLAREA = 0x0008, PDVF_SORTDESCENDING = 0x0010, PDVF_SHOWONLYIFPRESENT = 0x0020, PDVF_SHOWBYDEFAULT = 0x0040, PDVF_SHOWINPRIMARYLIST = 0x0080, PDVF_SHOWINSECONDARYLIST = 0x0100, PDVF_HIDELABEL = 0x0200, PDVF_HIDDEN = 0x0800, PDVF_CANWRAP = 0x1000, PDVF_MASK_ALL = 0x1bff } PROPDESC_VIEW_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_VIEW_FLAGS)") typedef [v1_enum] enum PROPDESC_DISPLAYTYPE { PDDT_STRING = 0, PDDT_NUMBER, PDDT_BOOLEAN, PDDT_DATETIME, PDDT_ENUMERATED } PROPDESC_DISPLAYTYPE; typedef [v1_enum] enum PROPDESC_GROUPING_RANGE { PDGR_DISCRETE = 0, PDGR_ALPHANUMERIC, PDGR_SIZE, PDGR_DYNAMIC, PDGR_DATE, PDGR_PERCENT, PDGR_ENUMERATED } PROPDESC_GROUPING_RANGE; typedef [v1_enum] enum PROPDESC_FORMAT_FLAGS { PDFF_DEFAULT = 0x0000, PDFF_PREFIXNAME = 0x0001, PDFF_FILENAME = 0x0002, PDFF_ALWAYSKB = 0x0004, PDFF_RESERVED_RIGHTTOLEFT = 0x0008, PDFF_SHORTTIME = 0x0010, PDFF_LONGTIME = 0x0020, PDFF_HIDETIME = 0x0040, PDFF_SHORTDATE = 0x0080, PDFF_LONGDATE = 0x0100, PDFF_HIDEDATE = 0x0200, PDFF_RELATIVEDATE = 0x0400, PDFF_USEEDITINVITATION = 0x0800, PDFF_READONLY = 0x1000, PDFF_NOAUTOREADINGORDER = 0x2000 } PROPDESC_FORMAT_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_FORMAT_FLAGS)") typedef [v1_enum] enum PROPDESC_SORTDESCRIPTION { PDSD_GENERAL = 0, PDSD_A_Z, PDSD_LOWEST_HIGHEST, PDSD_SMALLEST_BIGGEST, PDSD_OLDEST_NEWEST } PROPDESC_SORTDESCRIPTION; typedef [v1_enum] enum PROPDESC_RELATIVEDESCRIPTION_TYPE { PDRDT_GENERAL = 0, PDRDT_DATE, PDRDT_SIZE, PDRDT_COUNT, PDRDT_REVISION, PDRDT_LENGTH, PDRDT_DURATION, PDRDT_SPEED, PDRDT_RATE, PDRDT_RATING, PDRDT_PRIORITY } PROPDESC_RELATIVEDESCRIPTION_TYPE; typedef [v1_enum] enum PROPDESC_AGGREGATION_TYPE { PDAT_DEFAULT = 0, PDAT_FIRST, PDAT_SUM, PDAT_AVERAGE, PDAT_DATERANGE, PDAT_UNION, PDAT_MAX, PDAT_MIN } PROPDESC_AGGREGATION_TYPE; typedef [v1_enum] enum PROPDESC_CONDITION_TYPE { PDCOT_NONE = 0, PDCOT_STRING, PDCOT_SIZE, PDCOT_DATETIME, PDCOT_BOOLEAN, PDCOT_NUMBER } PROPDESC_CONDITION_TYPE; HRESULT GetPropertyKey( [out] PROPERTYKEY *pkey ); HRESULT GetCanonicalName( [out, string] LPWSTR *ppszName ); HRESULT GetPropertyType( [out] VARTYPE *pvartype ); HRESULT GetDisplayName( [out, string] LPWSTR *ppszName ); HRESULT GetEditInvitation( [out, string] LPWSTR *ppszName ); HRESULT GetTypeFlags( [in] PROPDESC_TYPE_FLAGS mask, [out] PROPDESC_TYPE_FLAGS *ppdtFlags ); HRESULT GetViewFlags( [out] PROPDESC_VIEW_FLAGS *ppdvFlags ); HRESULT GetDefaultColumnWidth( [out] UINT *pcxChars ); HRESULT GetDisplayType( [out] PROPDESC_DISPLAYTYPE *pdisplaytype ); HRESULT GetColumnState( [out] SHCOLSTATEF *pcsFlags ); HRESULT GetGroupingRange( [out] PROPDESC_GROUPING_RANGE *psd ); HRESULT GetRelativeDescriptionType( [out] PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt ); HRESULT GetRelativeDescription( [in] REFPROPVARIANT propvar1, [in] REFPROPVARIANT propvar2, [out,string] LPWSTR *ppszDesc1, [out,string] LPWSTR *ppszDesc2 ); HRESULT GetSortDescription( [out] PROPDESC_SORTDESCRIPTION *psd ); HRESULT GetSortDescriptionLabel( [in] BOOL fDescending, [out,string] LPWSTR *ppszDescription ); HRESULT GetAggregationType( [out] PROPDESC_AGGREGATION_TYPE *paggtype ); HRESULT GetConditionType( [out] PROPDESC_CONDITION_TYPE *pcontype, [out] CONDITION_OPERATION *popDefault ); HRESULT GetEnumTypeList( [in] REFIID riid, [out,iid_is(riid)] void **ppv ); [local] HRESULT CoerceToCanonicalValue( [in,out] PROPVARIANT *propvar ); [call_as(CoerceToCanonicalValue)] HRESULT RemoteCoerceToCanonicalValue( [in] REFPROPVARIANT propvar, [out] PROPVARIANT *ppropvar ); HRESULT FormatForDisplay( [in] REFPROPVARIANT propvar, [in] PROPDESC_FORMAT_FLAGS flags, [out,string] LPWSTR *ppszDisplay ); HRESULT IsValueCanonical( [in] REFPROPVARIANT propvar );}[ uuid(57d2eded-5062-400e-b107-5dae79fe57a6), object, pointer_default(unique)]interface IPropertyDescription2 : IPropertyDescription{ HRESULT GetImageReferenceForValue( [in] REFPROPVARIANT propvar, [out,string] LPWSTR *ppszImageRes );}[ uuid(f67104fc-2af9-46fd-b32d-243c1404f3d1), object, pointer_default(unique)]interface IPropertyDescriptionAliasInfo : IPropertyDescription{ HRESULT GetSortByAlias( [in] REFIID riid, [out,iid_is(riid)] void **ppv ); HRESULT GetAdditionalSortByAliases( [in] REFIID riid, [out,iid_is(riid)] void **ppv );}[ uuid(078f91bd-29a2-440f-924e-46a291524520), object, pointer_default(unique)]interface IPropertyDescriptionSearchInfo : IPropertyDescription{ typedef [v1_enum] enum PROPDESC_SEARCHINFO_FLAGS { PDSIF_DEFAULT = 0x0, PDSIF_ININVERTEDINDEX = 0x1, PDSIF_ISCOLUMN = 0x2, PDSIF_ISCOLUMNSPARSE = 0x4, PDSIF_ALWAYSINCLUDE = 0x8, } PROPDESC_SEARCHINFO_FLAGS; cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS)") typedef [v1_enum] enum PROPDESC_COLUMNINDEX_TYPE { PDCIT_NONE = 0, PDCIT_ONDISK, PDCIT_INMEMORY, PDCIT_ONDEMAND, PDCIT_ONDISKALL, PDCIT_ONDISKVECTOR } PROPDESC_COLUMNINDEX_TYPE; HRESULT GetSearchInfoFlags( [out] PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags ); HRESULT GetColumnIndexType( [out] PROPDESC_COLUMNINDEX_TYPE *ppdciType ); HRESULT GetProjectionString( [out] LPWSTR *ppszProjection ); HRESULT GetMaxSize( [out] UINT *pcbMaxSize );}[ uuid(507393f4-2a3d-4a60-b59e-d9c75716c2dd), object, pointer_default(unique)]interface IPropertyDescriptionRelatedPropertyInfo : IPropertyDescription{ HRESULT GetRelatedProperty( [in] LPCWSTR ppszRelationshipName, [in] REFIID riid, [out,iid_is(riid)] void **ppv );}typedef [v1_enum] enum PROPDESC_ENUMFILTER{ PDEF_ALL = 0, PDEF_SYSTEM, PDEF_NONSYSTEM, PDEF_VIEWABLE, PDEF_QUERYABLE, PDEF_INFULLTEXTQUERY, PDEF_COLUMN} PROPDESC_ENUMFILTER;[ uuid(ca724e8a-c3e6-442b-88a4-6fb0db8035a3), object, pointer_default(unique)]interface IPropertySystem : IUnknown{ HRESULT GetPropertyDescription( [in] REFPROPERTYKEY propkey, [in] REFIID riid, [out,iid_is(riid)] void **ppv ); HRESULT GetPropertyDescriptionByName( [in,string] LPCWSTR pszCanonicalName, [in] REFIID riid, [out,iid_is(riid)] void **ppv ); HRESULT GetPropertyDescriptionListFromString( [in,string] LPCWSTR pszPropList, [in] REFIID riid, [out,iid_is(riid)] void **ppv ); HRESULT EnumeratePropertyDescriptions( [in] PROPDESC_ENUMFILTER filterOn, [in] REFIID riid, [out,iid_is(riid)] void **ppv ); HRESULT FormatForDisplay( [in] REFPROPERTYKEY key, [in] REFPROPVARIANT propvar, [in] PROPDESC_FORMAT_FLAGS pdff, [out,string,size_is(cchText)] LPWSTR pszText, [in] DWORD cchText ); HRESULT FormatForDisplayAlloc( [in] REFPROPERTYKEY key, [in] REFPROPVARIANT propvar, [in] PROPDESC_FORMAT_FLAGS pdff, [out,string] LPWSTR *pszText ); HRESULT RegisterPropertySchema( [in,string] LPCWSTR pszPath ); HRESULT UnregisterPropertySchema( [in,string] LPCWSTR pszPath ); HRESULT RefreshPropertySchema(void);}[ uuid(1f9fc1d0-c39b-4b26-817f-011967d3440e), object, pointer_default(unique)]interface IPropertyDescriptionList : IUnknown{ HRESULT GetCount( [out] UINT *pcelem ); HRESULT GetAt( [in] UINT iElem, [in] REFIID riid, [out,iid_is(riid)] void **ppv );}[ uuid(bc110b6d-57e8-4148-a9c6-91015ab2f3a5), object, pointer_default(unique)]interface IPropertyStoreFactory : IUnknown{ HRESULT GetPropertyStore( [in] GETPROPERTYSTOREFLAGS flags, [in,unique] IUnknown *pUnkFactory, [in] REFIID riid, [out,iid_is(riid)] void **ppv ); HRESULT GetPropertyStoreForKeys( [in,unique] const PROPERTYKEY *rgKeys, [in] UINT cKeys, [in] GETPROPERTYSTOREFLAGS flags, [in] REFIID riid, [out,iid_is(riid)] void **ppv );}[ uuid(40d4577f-e237-4bdb-bd69-58f089431b6a), object, pointer_default(unique)]interface IDelayedPropertyStoreFactory : IPropertyStoreFactory{ HRESULT GetDelayedPropertyStore( [in] GETPROPERTYSTOREFLAGS flags, [in] DWORD dwStoreId, [in] REFIID riid, [out,iid_is(riid)] void **ppv );}[v1_enum] enum _PERSIST_SPROPSTORE_FLAGS{ FPSPS_DEFAULT = 0, FPSPS_READONLY = 1};typedef int PERSIST_SPROPSTORE_FLAGS;typedef struct tagSERIALIZEDROPSTORAGE SERIALIZEDPROPSTORAGE;cpp_quote("#if 0") /* Wine doesn't have __unaligned builtin, hack */typedef SERIALIZEDPROPSTORAGE *PUSERIALIZEDPROPSTORAGE;typedef const SERIALIZEDPROPSTORAGE *PCUSERIALIZEDPROPSTORAGE;cpp_quote("#endif")cpp_quote("typedef SERIALIZEDPROPSTORAGE UNALIGNED *PUSERIALIZEDPROPSTORAGE;")cpp_quote("typedef const SERIALIZEDPROPSTORAGE UNALIGNED *PCUSERIALIZEDPROPSTORAGE;")[ uuid(e318ad57-0aa0-450f-aca5-6fab7103d917), pointer_default(unique), local]interface IPersistSerializedPropStorage : IUnknown{ HRESULT SetFlags( [in] PERSIST_SPROPSTORE_FLAGS flags ); HRESULT SetPropertyStorage( [in] PCUSERIALIZEDPROPSTORAGE psps, [in] DWORD cb ); HRESULT GetPropertyStorage( [out] SERIALIZEDPROPSTORAGE **psps, [out] DWORD *pcb );}[ uuid(77effa68-4f98-4366-ba72-573b3d880571), pointer_default(unique), local]interface IPersistSerializedPropStorage2 : IPersistSerializedPropStorage{ HRESULT GetpropertyStorageSize( [out] DWORD *pcb ); HRESULT GetPropertyStorageBuffer( [out] SERIALIZEDPROPSTORAGE *psps, [in] DWORD cb, [out] DWORD *pcbWritten );}[ uuid(fa955fd9-38be-4879-a6ce-824cf52d609f), object, pointer_default(unique)]interface IPropertySystemChangeNotify : IUnknown{ HRESULT SchemaRefreshed(void);}/* Interface for CoCreateInstance? */[ uuid(75121952-e0d0-43e5-9380-1d80483acf72), pointer_default(unique)]interface ICreateObject : IUnknown{ HRESULT CreateObject( [in] REFCLSID clsid, [in,unique] IUnknown *pUnkOuter, [in] REFIID riid, [out,iid_is(riid)] void **ppv );}cpp_quote("#define PKEY_PIDSTR_MAX 10")cpp_quote("#define GUIDSTRING_MAX 39")cpp_quote("#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)")cpp_quote("PSSTDAPI PSCreateMemoryPropertyStore(REFIID,void **);")cpp_quote("PSSTDAPI PSCreatePropertyStoreFromObject(IUnknown*,DWORD,REFIID,void **);")cpp_quote("PSSTDAPI PSStringFromPropertyKey(REFPROPERTYKEY,LPWSTR,UINT);")cpp_quote("PSSTDAPI PSPropertyKeyFromString(LPCWSTR,PROPERTYKEY*);")cpp_quote("PSSTDAPI PSGetPropertyDescription(REFPROPERTYKEY,REFIID,void **);")cpp_quote("PSSTDAPI PSGetPropertyDescriptionListFromString(LPCWSTR,REFIID,void **);")cpp_quote("PSSTDAPI PSRefreshPropertySchema(void);")cpp_quote("PSSTDAPI PSRegisterPropertySchema(LPCWSTR);")cpp_quote("PSSTDAPI PSUnregisterPropertySchema(LPCWSTR);")/* TODO: Add remainder of the C api here */[ uuid(2cda3294-6c4f-4020-b161-27c530c81fa6), lcid(0x0000), version(1.0)]library PropSysObjects{ [uuid(9a02e012-6303-4e1e-b9a1-630f802592c5)] coclass InMemoryPropertyStore { interface IPropertyStore; } [uuid(b8967f85-58ae-4f46-9fb2-5d7904798f4b)] coclass PropertySystem { interface IPropertySystem; }}