summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/Graphics/shaderlib/wine/include/propsys.idl
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/propsys.idl')
-rw-r--r--src/VBox/Devices/Graphics/shaderlib/wine/include/propsys.idl832
1 files changed, 832 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/propsys.idl b/src/VBox/Devices/Graphics/shaderlib/wine/include/propsys.idl
new file mode 100644
index 00000000..c78e5c76
--- /dev/null
+++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/propsys.idl
@@ -0,0 +1,832 @@
+/*
+ * 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
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+import "objidl.idl";
+import "oleidl.idl";
+import "ocidl.idl";
+import "shtypes.idl";
+import "structuredquerycondition.idl";
+
+cpp_quote("#ifndef PSSTDAPI")
+cpp_quote("#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE")
+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-fe2acb55e974),
+ 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("HRESULT WINAPI PSStringFromPropertyKey(REFPROPERTYKEY,LPWSTR,UINT);")
+cpp_quote("HRESULT WINAPI PSPropertyKeyFromString(LPCWSTR,PROPERTYKEY*);")
+cpp_quote("HRESULT WINAPI PSGetPropertyDescription(REFPROPERTYKEY,REFIID,void **);")
+cpp_quote("HRESULT WINAPI PSRefreshPropertySchema(void);")
+
+/* 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(b8967f86-58ae-4f96-9fb2-5d7904798f4b)] coclass PropertySystem
+ {
+ interface IPropertySystem;
+ }
+}