reactos/sdk/include/psdk/propsys.idl
Mikhail Tyukin 2d1144a5cd
[PROPSYS] Sync to wine-10.0 (#7677)
[WINESYNC] propsys/tests: Merge test files.
wine commit id d189b55d2ffb038474cb6656dc8743eb34c35a3d by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] propsys: Add a semi-stub for PSCreatePropertyStoreFromObject().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47958
wine commit id acb2e4fc7a4242c74ac91657edb97bf1e402656a by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] propsys: Allow only ASCII digits in PSPropertyKeyFromString.
wine commit id 6e8c2d836e637e1fbd83c231cfd846ecb9333964 by Jacek Caban <jacek@codeweavers.com>

[WINESYNC] propsys/tests: Get rid of strcmp_wa().
wine commit id 2340212ee9c48c731c85bbad8c81ed833458bf15 by Michael Stefaniuc <mstefani@winehq.org>

[WINESYNC] propsys: Use wide-char string literals.
wine commit id b72440fa2e1016681cbfcebcdc4792b6ced3eb53 by Michael Stefaniuc <mstefani@winehq.org>

reduce wine diff and add stuff from previous commit

[WINESYNC] propsys: Use --prefer_native instead of DLL_WINE_PREATTACH.
wine commit id f99113192ffac37506a905827415d3d21d0ebbf8 by Alexandre Julliard <julliard@winehq.org>

[WINESYNC] propsys: Use nameless unions.
wine commit id 1d8e5079f0e53a767a783e5107f57f04c1897951 by Jacek Caban <jacek@codeweavers.com>

[WINESYNC] propsys/tests: Use nameless unions.
wine commit id 497de3cc19f971808ca4105f52038e61dc818db1 by Jacek Caban <jacek@codeweavers.com>

[WINESYNC] winecrt0: Add a default implementation for DllCanUnloadNow().
wine commit id bd6b53740c28c6974300e15f965c12feb0252085 by Alexandre Julliard <julliard@winehq.org>

[WINESYNC] winecrt0: Add a default implementation DllRegisterServer()/DllUnregisterServer().
wine commit id 5d82baf9747b7b133cad3be77c0cc9e24cc09582 by Alexandre Julliard <julliard@winehq.org>

[WINESYNC] propsys: Add support for VT_VECTOR|VT_UI1 type in PropVariantCompareEx().
wine commit id e91b05bb5be6fd70a767bea9991e818a49cc5547 by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] propsys: Fix VT_UI4 comparison, use ulVal instead of uiVal.
wine commit id 58eeb1a86433db1104d3a9ccf9ad7435ec81443a by Rémi Bernon <rbernon@codeweavers.com>

[WINESYNC] propsys/tests: Add a VT_UI4 test for PropVariantCompareEx().
A test for 58eeb1a86433db1104d3a9ccf9ad7435ec81443a.
wine commit id 10359e17ce64f39461a7b7b54f73857e6458d1fb by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] propsys/tests: Avoid "misleading indentation" warnings.
wine commit id 7cd6681b3be35cf6c02f056cb5131c90c0674c16 by Fabian Maurer <dark.shadow4@web.de>

[WINESYNC] propsys: Enable compilation with long types.
wine commit id a9c797e4538a37716e62bb81c3fed3de39561b41 by Eric Pouech <eric.pouech@gmail.com>

[WINESYNC] propsys/tests: Enable compilation with long types.
wine commit id c1c393595d43bd95390d3ddf86dcbc46bc4f52ba by Eric Pouech <eric.pouech@gmail.com>

[WINESYNC] propsys: Implement InitVariantFromFileTime.
wine commit id f2b8ccb7b0b22b7b5d661d908f8f8ee02f22647d by Daniel Lehman <dlehman@esri.com>

[WINESYNC] propsys/tests: Add some InitVariantFromFileTime tests.
wine commit id 083dea7fce4372840ac18176496a7d05dadd5ad8 by Daniel Lehman <dlehman@esri.com>

[WINESYNC] propsys: Implement VariantToStringWithDefault.
wine commit id bf0f1fdcf80657a42116b79a0953181191cf9221 by Mohamad Al-Jaf <mohamadaljaf@gmail.com>

[WINESYNC] propsys/tests: Add VariantToStringWithDefault tests.
wine commit id 89aba13dc381dbbda62d1019e1af2af5a589b0cf by Mohamad Al-Jaf <mohamadaljaf@gmail.com>

[WINESYNC] include: Add Stg functions declaration in propvarutil.h.
wine commit id 0d294ad26544913414277daa164004d731ae6e33 by Biswapriyo Nath <nathbappai@gmail.com>

[WINESYNC] propsys: Add InitPropVariantFromStringVector().
wine commit id 3a1146d8e63d7ceff38441fee08f7f7080527020 by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] Remove unused NONAMELESS defines.
wine commit id 20afe438320f77d103a96d1d8cd562d0899ebac7 by Alexandre Julliard <julliard@winehq.org>

[WINESYNC] propsys: Partially implement VariantToString().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55708
wine commit id f7ef02bd8f74ea052d61e48cd84b226d8a5867a8 by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] propsys: Handle VT_I4 type in VariantToString().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55708
wine commit id 001e0543bfd5aea060053af0c76233bb90fbb43b by Nikolay Sivov <nsivov@codeweavers.com>

[WINESYNC] propsys: Implement PropVariantToUInt32WithDefault.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55713
wine commit id d177709b10ce07ddd234b0e8e00764ae4b1d8488 by Fabian Maurer <dark.shadow4@web.de>

[WINESYNC] include: Use proper dllimports for propsys functions.
wine commit id f0b2e0d00c86fb04d47467f39e49c587250ffec5 by Alexandre Julliard <julliard@winehq.org>

[WINESYNC] propsys: Remove DECLSPEC_HIDDEN usage.
wine commit id e9ff53e098ef3871d692c7b907151cfbb2f0673f by Alistair Leslie-Hughes <leslie_alistair@hotmail.com>

Update propsys_private.h

[WINESYNC] propsys: Force debug info in critical sections.
wine commit id 67bea281cc851eda6a08430c70f6c9e848d3fbe1 by Paul Gofman <pgofman@codeweavers.com>

[WINESYNC] include: Fix typos in IID_IPropertyEnumType2 and CLSID_PropertySystem.
wine commit id 66e6b61705a66459ed3a9e0cf9457d8b180e4564 by Alfred Agrell <floating@muncher.se>

[WINESYNC] propsys: Add stubs for variant conversion functions.
wine commit id c21f04f7adaa4a8d0ca2d2659bf9a6facdc168c3 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys/tests: Add tests for VariantToPropVariant.
wine commit id 8877889f2a8e36d22dcad061e6da84476efb3750 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Initially implement VariantToPropVariant.
wine commit id 6985637ed59e81e7d1716095a343cc5681082306 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys/tests: Add tests for PropVariantToVariant.
wine commit id 3277de5572b7f6c41ebeeb89f781e378a6a2c2d3 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys/tests: Test converting clsid to string.
wine commit id 7a4f9f83c51883f41ae1363e27700452472ec18f by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Support converting clsid to string for PropVariant.
wine commit id 67b097ff46c65d525de6a7f560f019de6828320c by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Initially implement PropVariantToVariant.
wine commit id 808b398549350fffc9fc023d637ef8de9e4bba37 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Add PropVariantToBSTR stub.
wine commit id 86558a4b83ebf9a0c6e76888a3d0f3fe3e36bf57 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys/tests: Test PropVariantToBSTR.
wine commit id b4ac03f1f622120906a8b6e691caa05f6539c2dd by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys/tests: Test truncating for PropVariantToString.
wine commit id df16802582a56f8076ebbcf9cb6178f65bb8b9b6 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Implement PropVariantToBSTR.
wine commit id 66220be403ce5c3634c13da3546f0c19f04059cc by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Use debugstr_variant for the trace in VariantToPropVariant.
wine commit id 3517aded4090229dbb11e413bde8349d1eca0be3 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys: Support converting to BSTR for PropVariantToVariant.
wine commit id c33fdc27650045a754a05a8f25e250e6e72c8072 by Ziqing Hui <zhui@codeweavers.com>

[WINESYNC] propsys/tests: Fix a test that fails on some Windows versions.
wine commit id c09f828f43101cf2dfe11d7e13f1fc6ef4b19853 by Alexandre Julliard <julliard@winehq.org>

[WINESYNC]: propsys is now in sync with wine-staging wine-10.0
Co-authored-by: winesync <ros-dev@reactos.org>

[PROPSYS] Remove duplicate uuid

[PROPSYS] Fix headers/idl file
2025-02-07 22:00:48 +01:00

835 lines
20 KiB
Text

/*
* 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;
}
}