/*** Autogenerated by WIDL 6.12 from include/propsys.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __propsys_h__
#define __propsys_h__

/* Forward declarations */

#ifndef __IInitializeWithFile_FWD_DEFINED__
#define __IInitializeWithFile_FWD_DEFINED__
typedef interface IInitializeWithFile IInitializeWithFile;
#ifdef __cplusplus
interface IInitializeWithFile;
#endif /* __cplusplus */
#endif

#ifndef __IInitializeWithStream_FWD_DEFINED__
#define __IInitializeWithStream_FWD_DEFINED__
typedef interface IInitializeWithStream IInitializeWithStream;
#ifdef __cplusplus
interface IInitializeWithStream;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyStore_FWD_DEFINED__
#define __IPropertyStore_FWD_DEFINED__
typedef interface IPropertyStore IPropertyStore;
#ifdef __cplusplus
interface IPropertyStore;
#endif /* __cplusplus */
#endif

#ifndef __INamedPropertyStore_FWD_DEFINED__
#define __INamedPropertyStore_FWD_DEFINED__
typedef interface INamedPropertyStore INamedPropertyStore;
#ifdef __cplusplus
interface INamedPropertyStore;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithPropertyKey_FWD_DEFINED__
#define __IObjectWithPropertyKey_FWD_DEFINED__
typedef interface IObjectWithPropertyKey IObjectWithPropertyKey;
#ifdef __cplusplus
interface IObjectWithPropertyKey;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyChange_FWD_DEFINED__
#define __IPropertyChange_FWD_DEFINED__
typedef interface IPropertyChange IPropertyChange;
#ifdef __cplusplus
interface IPropertyChange;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyChangeArray_FWD_DEFINED__
#define __IPropertyChangeArray_FWD_DEFINED__
typedef interface IPropertyChangeArray IPropertyChangeArray;
#ifdef __cplusplus
interface IPropertyChangeArray;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyStoreCapabilities_FWD_DEFINED__
#define __IPropertyStoreCapabilities_FWD_DEFINED__
typedef interface IPropertyStoreCapabilities IPropertyStoreCapabilities;
#ifdef __cplusplus
interface IPropertyStoreCapabilities;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyStoreCache_FWD_DEFINED__
#define __IPropertyStoreCache_FWD_DEFINED__
typedef interface IPropertyStoreCache IPropertyStoreCache;
#ifdef __cplusplus
interface IPropertyStoreCache;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyEnumType_FWD_DEFINED__
#define __IPropertyEnumType_FWD_DEFINED__
typedef interface IPropertyEnumType IPropertyEnumType;
#ifdef __cplusplus
interface IPropertyEnumType;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyEnumType2_FWD_DEFINED__
#define __IPropertyEnumType2_FWD_DEFINED__
typedef interface IPropertyEnumType2 IPropertyEnumType2;
#ifdef __cplusplus
interface IPropertyEnumType2;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyEnumTypeList_FWD_DEFINED__
#define __IPropertyEnumTypeList_FWD_DEFINED__
typedef interface IPropertyEnumTypeList IPropertyEnumTypeList;
#ifdef __cplusplus
interface IPropertyEnumTypeList;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyDescription_FWD_DEFINED__
#define __IPropertyDescription_FWD_DEFINED__
typedef interface IPropertyDescription IPropertyDescription;
#ifdef __cplusplus
interface IPropertyDescription;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyDescription2_FWD_DEFINED__
#define __IPropertyDescription2_FWD_DEFINED__
typedef interface IPropertyDescription2 IPropertyDescription2;
#ifdef __cplusplus
interface IPropertyDescription2;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyDescriptionAliasInfo_FWD_DEFINED__
#define __IPropertyDescriptionAliasInfo_FWD_DEFINED__
typedef interface IPropertyDescriptionAliasInfo IPropertyDescriptionAliasInfo;
#ifdef __cplusplus
interface IPropertyDescriptionAliasInfo;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyDescriptionSearchInfo_FWD_DEFINED__
#define __IPropertyDescriptionSearchInfo_FWD_DEFINED__
typedef interface IPropertyDescriptionSearchInfo IPropertyDescriptionSearchInfo;
#ifdef __cplusplus
interface IPropertyDescriptionSearchInfo;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyDescriptionRelatedPropertyInfo_FWD_DEFINED__
#define __IPropertyDescriptionRelatedPropertyInfo_FWD_DEFINED__
typedef interface IPropertyDescriptionRelatedPropertyInfo IPropertyDescriptionRelatedPropertyInfo;
#ifdef __cplusplus
interface IPropertyDescriptionRelatedPropertyInfo;
#endif /* __cplusplus */
#endif

#ifndef __IPropertySystem_FWD_DEFINED__
#define __IPropertySystem_FWD_DEFINED__
typedef interface IPropertySystem IPropertySystem;
#ifdef __cplusplus
interface IPropertySystem;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyDescriptionList_FWD_DEFINED__
#define __IPropertyDescriptionList_FWD_DEFINED__
typedef interface IPropertyDescriptionList IPropertyDescriptionList;
#ifdef __cplusplus
interface IPropertyDescriptionList;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyStoreFactory_FWD_DEFINED__
#define __IPropertyStoreFactory_FWD_DEFINED__
typedef interface IPropertyStoreFactory IPropertyStoreFactory;
#ifdef __cplusplus
interface IPropertyStoreFactory;
#endif /* __cplusplus */
#endif

#ifndef __IDelayedPropertyStoreFactory_FWD_DEFINED__
#define __IDelayedPropertyStoreFactory_FWD_DEFINED__
typedef interface IDelayedPropertyStoreFactory IDelayedPropertyStoreFactory;
#ifdef __cplusplus
interface IDelayedPropertyStoreFactory;
#endif /* __cplusplus */
#endif

#ifndef __IPersistSerializedPropStorage_FWD_DEFINED__
#define __IPersistSerializedPropStorage_FWD_DEFINED__
typedef interface IPersistSerializedPropStorage IPersistSerializedPropStorage;
#ifdef __cplusplus
interface IPersistSerializedPropStorage;
#endif /* __cplusplus */
#endif

#ifndef __IPersistSerializedPropStorage2_FWD_DEFINED__
#define __IPersistSerializedPropStorage2_FWD_DEFINED__
typedef interface IPersistSerializedPropStorage2 IPersistSerializedPropStorage2;
#ifdef __cplusplus
interface IPersistSerializedPropStorage2;
#endif /* __cplusplus */
#endif

#ifndef __IPropertySystemChangeNotify_FWD_DEFINED__
#define __IPropertySystemChangeNotify_FWD_DEFINED__
typedef interface IPropertySystemChangeNotify IPropertySystemChangeNotify;
#ifdef __cplusplus
interface IPropertySystemChangeNotify;
#endif /* __cplusplus */
#endif

#ifndef __ICreateObject_FWD_DEFINED__
#define __ICreateObject_FWD_DEFINED__
typedef interface ICreateObject ICreateObject;
#ifdef __cplusplus
interface ICreateObject;
#endif /* __cplusplus */
#endif

#ifndef __InMemoryPropertyStore_FWD_DEFINED__
#define __InMemoryPropertyStore_FWD_DEFINED__
#ifdef __cplusplus
typedef class InMemoryPropertyStore InMemoryPropertyStore;
#else
typedef struct InMemoryPropertyStore InMemoryPropertyStore;
#endif /* defined __cplusplus */
#endif /* defined __InMemoryPropertyStore_FWD_DEFINED__ */

#ifndef __PropertySystem_FWD_DEFINED__
#define __PropertySystem_FWD_DEFINED__
#ifdef __cplusplus
typedef class PropertySystem PropertySystem;
#else
typedef struct PropertySystem PropertySystem;
#endif /* defined __cplusplus */
#endif /* defined __PropertySystem_FWD_DEFINED__ */

/* Headers for imported files */

#include <objidl.h>
#include <oleidl.h>
#include <ocidl.h>
#include <shtypes.h>
#include <structuredquerycondition.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */

#include <winapifamily.h>


#ifndef PSSTDAPI
#ifdef _PROPSYS_
#define PSSTDAPI STDAPI
#define PSSTDAPI_(type)   STDAPI_(type)
#else
#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
#endif
#endif

#if 0
typedef PROPERTYKEY *REFPROPERTYKEY;
#endif

#include <propkeydef.h>
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
/*****************************************************************************
 * IInitializeWithFile interface
 */
#ifndef __IInitializeWithFile_INTERFACE_DEFINED__
#define __IInitializeWithFile_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeWithFile, 0xb7d14566, 0x0509, 0x4cce, 0xa7,0x1f, 0x0a,0x55,0x42,0x33,0xbd,0x9b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b7d14566-0509-4cce-a71f-0a554233bd9b")
IInitializeWithFile : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCWSTR pszFilePath,
        DWORD grfMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeWithFile, 0xb7d14566, 0x0509, 0x4cce, 0xa7,0x1f, 0x0a,0x55,0x42,0x33,0xbd,0x9b)
#endif
#else
typedef struct IInitializeWithFileVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInitializeWithFile *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInitializeWithFile *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInitializeWithFile *This);

    /*** IInitializeWithFile methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeWithFile *This,
        LPCWSTR pszFilePath,
        DWORD grfMode);

    END_INTERFACE
} IInitializeWithFileVtbl;

interface IInitializeWithFile {
    CONST_VTBL IInitializeWithFileVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeWithFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeWithFile_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeWithFile_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeWithFile methods ***/
#define IInitializeWithFile_Initialize(This,pszFilePath,grfMode) (This)->lpVtbl->Initialize(This,pszFilePath,grfMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInitializeWithFile_QueryInterface(IInitializeWithFile* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInitializeWithFile_AddRef(IInitializeWithFile* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInitializeWithFile_Release(IInitializeWithFile* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeWithFile methods ***/
static FORCEINLINE HRESULT IInitializeWithFile_Initialize(IInitializeWithFile* This,LPCWSTR pszFilePath,DWORD grfMode) {
    return This->lpVtbl->Initialize(This,pszFilePath,grfMode);
}
#endif
#endif

#endif


#endif  /* __IInitializeWithFile_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInitializeWithStream interface
 */
#ifndef __IInitializeWithStream_INTERFACE_DEFINED__
#define __IInitializeWithStream_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeWithStream, 0xb824b49d, 0x22ac, 0x4161, 0xac,0x8a, 0x99,0x16,0xe8,0xfa,0x3f,0x7f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")
IInitializeWithStream : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IStream *pstream,
        DWORD grfMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeWithStream, 0xb824b49d, 0x22ac, 0x4161, 0xac,0x8a, 0x99,0x16,0xe8,0xfa,0x3f,0x7f)
#endif
#else
typedef struct IInitializeWithStreamVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInitializeWithStream *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInitializeWithStream *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInitializeWithStream *This);

    /*** IInitializeWithStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeWithStream *This,
        IStream *pstream,
        DWORD grfMode);

    END_INTERFACE
} IInitializeWithStreamVtbl;

interface IInitializeWithStream {
    CONST_VTBL IInitializeWithStreamVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeWithStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeWithStream_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeWithStream_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeWithStream methods ***/
#define IInitializeWithStream_Initialize(This,pstream,grfMode) (This)->lpVtbl->Initialize(This,pstream,grfMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInitializeWithStream_QueryInterface(IInitializeWithStream* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInitializeWithStream_AddRef(IInitializeWithStream* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInitializeWithStream_Release(IInitializeWithStream* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeWithStream methods ***/
static FORCEINLINE HRESULT IInitializeWithStream_Initialize(IInitializeWithStream* This,IStream *pstream,DWORD grfMode) {
    return This->lpVtbl->Initialize(This,pstream,grfMode);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IInitializeWithStream_RemoteInitialize_Proxy(
    IInitializeWithStream* This,
    IStream *pstream,
    DWORD grfMode);
void __RPC_STUB IInitializeWithStream_RemoteInitialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IInitializeWithStream_Initialize_Proxy(
    IInitializeWithStream* This,
    IStream *pstream,
    DWORD grfMode);
HRESULT __RPC_STUB IInitializeWithStream_Initialize_Stub(
    IInitializeWithStream* This,
    IStream *pstream,
    DWORD grfMode);

#endif  /* __IInitializeWithStream_INTERFACE_DEFINED__ */

#endif

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
/*****************************************************************************
 * IPropertyStore interface
 */
#ifndef __IPropertyStore_INTERFACE_DEFINED__
#define __IPropertyStore_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyStore, 0x886d8eeb, 0x8cf2, 0x4446, 0x8d,0x02, 0xcd,0xba,0x1d,0xbd,0xcf,0x99);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("886d8eeb-8cf2-4446-8d02-cdba1dbdcf99")
IPropertyStore : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCount(
        DWORD *cProps) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAt(
        DWORD iProp,
        PROPERTYKEY *pkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetValue(
        REFPROPERTYKEY key,
        PROPVARIANT *pv) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetValue(
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyStore, 0x886d8eeb, 0x8cf2, 0x4446, 0x8d,0x02, 0xcd,0xba,0x1d,0xbd,0xcf,0x99)
#endif
#else
typedef struct IPropertyStoreVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyStore *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyStore *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyStore *This);

    /*** IPropertyStore methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IPropertyStore *This,
        DWORD *cProps);

    HRESULT (STDMETHODCALLTYPE *GetAt)(
        IPropertyStore *This,
        DWORD iProp,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IPropertyStore *This,
        REFPROPERTYKEY key,
        PROPVARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IPropertyStore *This,
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IPropertyStore *This);

    END_INTERFACE
} IPropertyStoreVtbl;

interface IPropertyStore {
    CONST_VTBL IPropertyStoreVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyStore_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyStore_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyStore_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyStore methods ***/
#define IPropertyStore_GetCount(This,cProps) (This)->lpVtbl->GetCount(This,cProps)
#define IPropertyStore_GetAt(This,iProp,pkey) (This)->lpVtbl->GetAt(This,iProp,pkey)
#define IPropertyStore_GetValue(This,key,pv) (This)->lpVtbl->GetValue(This,key,pv)
#define IPropertyStore_SetValue(This,key,propvar) (This)->lpVtbl->SetValue(This,key,propvar)
#define IPropertyStore_Commit(This) (This)->lpVtbl->Commit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyStore_QueryInterface(IPropertyStore* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyStore_AddRef(IPropertyStore* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyStore_Release(IPropertyStore* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyStore methods ***/
static FORCEINLINE HRESULT IPropertyStore_GetCount(IPropertyStore* This,DWORD *cProps) {
    return This->lpVtbl->GetCount(This,cProps);
}
static FORCEINLINE HRESULT IPropertyStore_GetAt(IPropertyStore* This,DWORD iProp,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetAt(This,iProp,pkey);
}
static FORCEINLINE HRESULT IPropertyStore_GetValue(IPropertyStore* This,REFPROPERTYKEY key,PROPVARIANT *pv) {
    return This->lpVtbl->GetValue(This,key,pv);
}
static FORCEINLINE HRESULT IPropertyStore_SetValue(IPropertyStore* This,REFPROPERTYKEY key,REFPROPVARIANT propvar) {
    return This->lpVtbl->SetValue(This,key,propvar);
}
static FORCEINLINE HRESULT IPropertyStore_Commit(IPropertyStore* This) {
    return This->lpVtbl->Commit(This);
}
#endif
#endif

#endif


#endif  /* __IPropertyStore_INTERFACE_DEFINED__ */


typedef IPropertyStore *LPPROPERTYSTORE;
#endif

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
/*****************************************************************************
 * INamedPropertyStore interface
 */
#ifndef __INamedPropertyStore_INTERFACE_DEFINED__
#define __INamedPropertyStore_INTERFACE_DEFINED__

DEFINE_GUID(IID_INamedPropertyStore, 0x71604b0f, 0x97b0, 0x4764, 0x85,0x77, 0x2f,0x13,0xe9,0x8a,0x14,0x22);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71604b0f-97b0-4764-8577-2f13e98a1422")
INamedPropertyStore : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetNamedValue(
        LPCWSTR pszName,
        PROPVARIANT *ppropvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNamedValue(
        LPCWSTR pszName,
        REFPROPVARIANT propvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNameCount(
        DWORD *pdwCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNameAt(
        DWORD iProp,
        BSTR *pbstrName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INamedPropertyStore, 0x71604b0f, 0x97b0, 0x4764, 0x85,0x77, 0x2f,0x13,0xe9,0x8a,0x14,0x22)
#endif
#else
typedef struct INamedPropertyStoreVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        INamedPropertyStore *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        INamedPropertyStore *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        INamedPropertyStore *This);

    /*** INamedPropertyStore methods ***/
    HRESULT (STDMETHODCALLTYPE *GetNamedValue)(
        INamedPropertyStore *This,
        LPCWSTR pszName,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *SetNamedValue)(
        INamedPropertyStore *This,
        LPCWSTR pszName,
        REFPROPVARIANT propvar);

    HRESULT (STDMETHODCALLTYPE *GetNameCount)(
        INamedPropertyStore *This,
        DWORD *pdwCount);

    HRESULT (STDMETHODCALLTYPE *GetNameAt)(
        INamedPropertyStore *This,
        DWORD iProp,
        BSTR *pbstrName);

    END_INTERFACE
} INamedPropertyStoreVtbl;

interface INamedPropertyStore {
    CONST_VTBL INamedPropertyStoreVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INamedPropertyStore_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INamedPropertyStore_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INamedPropertyStore_Release(This) (This)->lpVtbl->Release(This)
/*** INamedPropertyStore methods ***/
#define INamedPropertyStore_GetNamedValue(This,pszName,ppropvar) (This)->lpVtbl->GetNamedValue(This,pszName,ppropvar)
#define INamedPropertyStore_SetNamedValue(This,pszName,propvar) (This)->lpVtbl->SetNamedValue(This,pszName,propvar)
#define INamedPropertyStore_GetNameCount(This,pdwCount) (This)->lpVtbl->GetNameCount(This,pdwCount)
#define INamedPropertyStore_GetNameAt(This,iProp,pbstrName) (This)->lpVtbl->GetNameAt(This,iProp,pbstrName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INamedPropertyStore_QueryInterface(INamedPropertyStore* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INamedPropertyStore_AddRef(INamedPropertyStore* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INamedPropertyStore_Release(INamedPropertyStore* This) {
    return This->lpVtbl->Release(This);
}
/*** INamedPropertyStore methods ***/
static FORCEINLINE HRESULT INamedPropertyStore_GetNamedValue(INamedPropertyStore* This,LPCWSTR pszName,PROPVARIANT *ppropvar) {
    return This->lpVtbl->GetNamedValue(This,pszName,ppropvar);
}
static FORCEINLINE HRESULT INamedPropertyStore_SetNamedValue(INamedPropertyStore* This,LPCWSTR pszName,REFPROPVARIANT propvar) {
    return This->lpVtbl->SetNamedValue(This,pszName,propvar);
}
static FORCEINLINE HRESULT INamedPropertyStore_GetNameCount(INamedPropertyStore* This,DWORD *pdwCount) {
    return This->lpVtbl->GetNameCount(This,pdwCount);
}
static FORCEINLINE HRESULT INamedPropertyStore_GetNameAt(INamedPropertyStore* This,DWORD iProp,BSTR *pbstrName) {
    return This->lpVtbl->GetNameAt(This,iProp,pbstrName);
}
#endif
#endif

#endif


#endif  /* __INamedPropertyStore_INTERFACE_DEFINED__ */


typedef enum GETPROPERTYSTOREFLAGS {
    GPS_DEFAULT = 0x0,
    GPS_HANDLERPROPERTIESONLY = 0x1,
    GPS_READWRITE = 0x2,
    GPS_TEMPORARY = 0x4,
    GPS_FASTPROPERTIESONLY = 0x8,
    GPS_OPENSLOWITEM = 0x10,
    GPS_DELAYCREATION = 0x20,
    GPS_BESTEFFORT = 0x40,
    GPS_NO_OPLOCK = 0x80,
    GPS_PREFERQUERYPROPERTIES = 0x100,
    GPS_MASK_VALID = 0x1ff
} GETPROPERTYSTOREFLAGS;

DEFINE_ENUM_FLAG_OPERATORS(GETPROPERTYSTOREFLAGS)

/*****************************************************************************
 * IObjectWithPropertyKey interface
 */
#ifndef __IObjectWithPropertyKey_INTERFACE_DEFINED__
#define __IObjectWithPropertyKey_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithPropertyKey, 0xfc0ca0a7, 0xc316, 0x4fd2, 0x90,0x31, 0x3e,0x62,0x8e,0x6d,0x4f,0x23);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fc0ca0a7-c316-4fd2-9031-3e628e6d4f23")
IObjectWithPropertyKey : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetPropertyKey(
        REFPROPERTYKEY key) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyKey(
        PROPERTYKEY *pkey) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithPropertyKey, 0xfc0ca0a7, 0xc316, 0x4fd2, 0x90,0x31, 0x3e,0x62,0x8e,0x6d,0x4f,0x23)
#endif
#else
typedef struct IObjectWithPropertyKeyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IObjectWithPropertyKey *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IObjectWithPropertyKey *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IObjectWithPropertyKey *This);

    /*** IObjectWithPropertyKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetPropertyKey)(
        IObjectWithPropertyKey *This,
        REFPROPERTYKEY key);

    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IObjectWithPropertyKey *This,
        PROPERTYKEY *pkey);

    END_INTERFACE
} IObjectWithPropertyKeyVtbl;

interface IObjectWithPropertyKey {
    CONST_VTBL IObjectWithPropertyKeyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithPropertyKey_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithPropertyKey_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithPropertyKey_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithPropertyKey methods ***/
#define IObjectWithPropertyKey_SetPropertyKey(This,key) (This)->lpVtbl->SetPropertyKey(This,key)
#define IObjectWithPropertyKey_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IObjectWithPropertyKey_QueryInterface(IObjectWithPropertyKey* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IObjectWithPropertyKey_AddRef(IObjectWithPropertyKey* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IObjectWithPropertyKey_Release(IObjectWithPropertyKey* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithPropertyKey methods ***/
static FORCEINLINE HRESULT IObjectWithPropertyKey_SetPropertyKey(IObjectWithPropertyKey* This,REFPROPERTYKEY key) {
    return This->lpVtbl->SetPropertyKey(This,key);
}
static FORCEINLINE HRESULT IObjectWithPropertyKey_GetPropertyKey(IObjectWithPropertyKey* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
#endif
#endif

#endif


#endif  /* __IObjectWithPropertyKey_INTERFACE_DEFINED__ */


typedef enum PKA_FLAGS {
    PKA_SET = 0,
    PKA_APPEND = 1,
    PKA_DELETE = 2
} PKA_FLAGS;

/*****************************************************************************
 * IPropertyChange interface
 */
#ifndef __IPropertyChange_INTERFACE_DEFINED__
#define __IPropertyChange_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyChange, 0xf917bc8a, 0x1bba, 0x4478, 0xa2,0x45, 0x1b,0xde,0x03,0xeb,0x94,0x31);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f917bc8a-1bba-4478-a245-1bde03eb9431")
IPropertyChange : public IObjectWithPropertyKey
{
    virtual HRESULT STDMETHODCALLTYPE ApplyToPropVariant(
        REFPROPVARIANT propvarIn,
        PROPVARIANT *ppropvarOut) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyChange, 0xf917bc8a, 0x1bba, 0x4478, 0xa2,0x45, 0x1b,0xde,0x03,0xeb,0x94,0x31)
#endif
#else
typedef struct IPropertyChangeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyChange *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyChange *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyChange *This);

    /*** IObjectWithPropertyKey methods ***/
    HRESULT (STDMETHODCALLTYPE *SetPropertyKey)(
        IPropertyChange *This,
        REFPROPERTYKEY key);

    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IPropertyChange *This,
        PROPERTYKEY *pkey);

    /*** IPropertyChange methods ***/
    HRESULT (STDMETHODCALLTYPE *ApplyToPropVariant)(
        IPropertyChange *This,
        REFPROPVARIANT propvarIn,
        PROPVARIANT *ppropvarOut);

    END_INTERFACE
} IPropertyChangeVtbl;

interface IPropertyChange {
    CONST_VTBL IPropertyChangeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyChange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyChange_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyChange_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithPropertyKey methods ***/
#define IPropertyChange_SetPropertyKey(This,key) (This)->lpVtbl->SetPropertyKey(This,key)
#define IPropertyChange_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
/*** IPropertyChange methods ***/
#define IPropertyChange_ApplyToPropVariant(This,propvarIn,ppropvarOut) (This)->lpVtbl->ApplyToPropVariant(This,propvarIn,ppropvarOut)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyChange_QueryInterface(IPropertyChange* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyChange_AddRef(IPropertyChange* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyChange_Release(IPropertyChange* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithPropertyKey methods ***/
static FORCEINLINE HRESULT IPropertyChange_SetPropertyKey(IPropertyChange* This,REFPROPERTYKEY key) {
    return This->lpVtbl->SetPropertyKey(This,key);
}
static FORCEINLINE HRESULT IPropertyChange_GetPropertyKey(IPropertyChange* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
/*** IPropertyChange methods ***/
static FORCEINLINE HRESULT IPropertyChange_ApplyToPropVariant(IPropertyChange* This,REFPROPVARIANT propvarIn,PROPVARIANT *ppropvarOut) {
    return This->lpVtbl->ApplyToPropVariant(This,propvarIn,ppropvarOut);
}
#endif
#endif

#endif


#endif  /* __IPropertyChange_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyChangeArray interface
 */
#ifndef __IPropertyChangeArray_INTERFACE_DEFINED__
#define __IPropertyChangeArray_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyChangeArray, 0x380f5cad, 0x1b5e, 0x42f2, 0x80,0x5d, 0x63,0x7f,0xd3,0x92,0xd3,0x1e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("380f5cad-1b5e-42f2-805d-637fd392d31e")
IPropertyChangeArray : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCount(
        UINT *pcOperations) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAt(
        UINT iIndex,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE InsertAt(
        UINT iIndex,
        IPropertyChange *ppropChange) = 0;

    virtual HRESULT STDMETHODCALLTYPE Append(
        IPropertyChange *ppropChange) = 0;

    virtual HRESULT STDMETHODCALLTYPE AppendOrReplace(
        IPropertyChange *ppropChange) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAt(
        UINT iIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsKeyInArray(
        REFPROPERTYKEY key) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyChangeArray, 0x380f5cad, 0x1b5e, 0x42f2, 0x80,0x5d, 0x63,0x7f,0xd3,0x92,0xd3,0x1e)
#endif
#else
typedef struct IPropertyChangeArrayVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyChangeArray *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyChangeArray *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyChangeArray *This);

    /*** IPropertyChangeArray methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IPropertyChangeArray *This,
        UINT *pcOperations);

    HRESULT (STDMETHODCALLTYPE *GetAt)(
        IPropertyChangeArray *This,
        UINT iIndex,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *InsertAt)(
        IPropertyChangeArray *This,
        UINT iIndex,
        IPropertyChange *ppropChange);

    HRESULT (STDMETHODCALLTYPE *Append)(
        IPropertyChangeArray *This,
        IPropertyChange *ppropChange);

    HRESULT (STDMETHODCALLTYPE *AppendOrReplace)(
        IPropertyChangeArray *This,
        IPropertyChange *ppropChange);

    HRESULT (STDMETHODCALLTYPE *RemoveAt)(
        IPropertyChangeArray *This,
        UINT iIndex);

    HRESULT (STDMETHODCALLTYPE *IsKeyInArray)(
        IPropertyChangeArray *This,
        REFPROPERTYKEY key);

    END_INTERFACE
} IPropertyChangeArrayVtbl;

interface IPropertyChangeArray {
    CONST_VTBL IPropertyChangeArrayVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyChangeArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyChangeArray_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyChangeArray_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyChangeArray methods ***/
#define IPropertyChangeArray_GetCount(This,pcOperations) (This)->lpVtbl->GetCount(This,pcOperations)
#define IPropertyChangeArray_GetAt(This,iIndex,riid,ppv) (This)->lpVtbl->GetAt(This,iIndex,riid,ppv)
#define IPropertyChangeArray_InsertAt(This,iIndex,ppropChange) (This)->lpVtbl->InsertAt(This,iIndex,ppropChange)
#define IPropertyChangeArray_Append(This,ppropChange) (This)->lpVtbl->Append(This,ppropChange)
#define IPropertyChangeArray_AppendOrReplace(This,ppropChange) (This)->lpVtbl->AppendOrReplace(This,ppropChange)
#define IPropertyChangeArray_RemoveAt(This,iIndex) (This)->lpVtbl->RemoveAt(This,iIndex)
#define IPropertyChangeArray_IsKeyInArray(This,key) (This)->lpVtbl->IsKeyInArray(This,key)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyChangeArray_QueryInterface(IPropertyChangeArray* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyChangeArray_AddRef(IPropertyChangeArray* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyChangeArray_Release(IPropertyChangeArray* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyChangeArray methods ***/
static FORCEINLINE HRESULT IPropertyChangeArray_GetCount(IPropertyChangeArray* This,UINT *pcOperations) {
    return This->lpVtbl->GetCount(This,pcOperations);
}
static FORCEINLINE HRESULT IPropertyChangeArray_GetAt(IPropertyChangeArray* This,UINT iIndex,REFIID riid,void **ppv) {
    return This->lpVtbl->GetAt(This,iIndex,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyChangeArray_InsertAt(IPropertyChangeArray* This,UINT iIndex,IPropertyChange *ppropChange) {
    return This->lpVtbl->InsertAt(This,iIndex,ppropChange);
}
static FORCEINLINE HRESULT IPropertyChangeArray_Append(IPropertyChangeArray* This,IPropertyChange *ppropChange) {
    return This->lpVtbl->Append(This,ppropChange);
}
static FORCEINLINE HRESULT IPropertyChangeArray_AppendOrReplace(IPropertyChangeArray* This,IPropertyChange *ppropChange) {
    return This->lpVtbl->AppendOrReplace(This,ppropChange);
}
static FORCEINLINE HRESULT IPropertyChangeArray_RemoveAt(IPropertyChangeArray* This,UINT iIndex) {
    return This->lpVtbl->RemoveAt(This,iIndex);
}
static FORCEINLINE HRESULT IPropertyChangeArray_IsKeyInArray(IPropertyChangeArray* This,REFPROPERTYKEY key) {
    return This->lpVtbl->IsKeyInArray(This,key);
}
#endif
#endif

#endif


#endif  /* __IPropertyChangeArray_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyStoreCapabilities interface
 */
#ifndef __IPropertyStoreCapabilities_INTERFACE_DEFINED__
#define __IPropertyStoreCapabilities_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyStoreCapabilities, 0xc8e2d566, 0x186e, 0x4d49, 0xbf,0x41, 0x69,0x09,0xea,0xd5,0x6a,0xcc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c8e2d566-186e-4d49-bf41-6909ead56acc")
IPropertyStoreCapabilities : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsPropertyWritable(
        REFPROPERTYKEY key) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyStoreCapabilities, 0xc8e2d566, 0x186e, 0x4d49, 0xbf,0x41, 0x69,0x09,0xea,0xd5,0x6a,0xcc)
#endif
#else
typedef struct IPropertyStoreCapabilitiesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyStoreCapabilities *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyStoreCapabilities *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyStoreCapabilities *This);

    /*** IPropertyStoreCapabilities methods ***/
    HRESULT (STDMETHODCALLTYPE *IsPropertyWritable)(
        IPropertyStoreCapabilities *This,
        REFPROPERTYKEY key);

    END_INTERFACE
} IPropertyStoreCapabilitiesVtbl;

interface IPropertyStoreCapabilities {
    CONST_VTBL IPropertyStoreCapabilitiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyStoreCapabilities_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyStoreCapabilities_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyStoreCapabilities_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyStoreCapabilities methods ***/
#define IPropertyStoreCapabilities_IsPropertyWritable(This,key) (This)->lpVtbl->IsPropertyWritable(This,key)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyStoreCapabilities_QueryInterface(IPropertyStoreCapabilities* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyStoreCapabilities_AddRef(IPropertyStoreCapabilities* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyStoreCapabilities_Release(IPropertyStoreCapabilities* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyStoreCapabilities methods ***/
static FORCEINLINE HRESULT IPropertyStoreCapabilities_IsPropertyWritable(IPropertyStoreCapabilities* This,REFPROPERTYKEY key) {
    return This->lpVtbl->IsPropertyWritable(This,key);
}
#endif
#endif

#endif


#endif  /* __IPropertyStoreCapabilities_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyStoreCache interface
 */
#ifndef __IPropertyStoreCache_INTERFACE_DEFINED__
#define __IPropertyStoreCache_INTERFACE_DEFINED__

typedef enum PSC_STATE {
    PSC_NORMAL = 0,
    PSC_NOTINSOURCE = 1,
    PSC_DIRTY = 2,
    PSC_READONLY = 3
} PSC_STATE;

DEFINE_GUID(IID_IPropertyStoreCache, 0x3017056d, 0x9a91, 0x4e90, 0x93,0x7d, 0x74,0x6c,0x72,0xab,0xbf,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3017056d-9a91-4e90-937d-746c72abbf4f")
IPropertyStoreCache : public IPropertyStore
{
    virtual HRESULT STDMETHODCALLTYPE GetState(
        REFPROPERTYKEY key,
        PSC_STATE *pstate) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetValueAndState(
        REFPROPERTYKEY key,
        PROPVARIANT *ppropvar,
        PSC_STATE *pstate) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetState(
        REFPROPERTYKEY key,
        PSC_STATE state) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetValueAndState(
        REFPROPERTYKEY key,
        const PROPVARIANT *ppropvar,
        PSC_STATE state) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyStoreCache, 0x3017056d, 0x9a91, 0x4e90, 0x93,0x7d, 0x74,0x6c,0x72,0xab,0xbf,0x4f)
#endif
#else
typedef struct IPropertyStoreCacheVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyStoreCache *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyStoreCache *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyStoreCache *This);

    /*** IPropertyStore methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IPropertyStoreCache *This,
        DWORD *cProps);

    HRESULT (STDMETHODCALLTYPE *GetAt)(
        IPropertyStoreCache *This,
        DWORD iProp,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IPropertyStoreCache *This,
        REFPROPERTYKEY key,
        PROPVARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IPropertyStoreCache *This,
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IPropertyStoreCache *This);

    /*** IPropertyStoreCache methods ***/
    HRESULT (STDMETHODCALLTYPE *GetState)(
        IPropertyStoreCache *This,
        REFPROPERTYKEY key,
        PSC_STATE *pstate);

    HRESULT (STDMETHODCALLTYPE *GetValueAndState)(
        IPropertyStoreCache *This,
        REFPROPERTYKEY key,
        PROPVARIANT *ppropvar,
        PSC_STATE *pstate);

    HRESULT (STDMETHODCALLTYPE *SetState)(
        IPropertyStoreCache *This,
        REFPROPERTYKEY key,
        PSC_STATE state);

    HRESULT (STDMETHODCALLTYPE *SetValueAndState)(
        IPropertyStoreCache *This,
        REFPROPERTYKEY key,
        const PROPVARIANT *ppropvar,
        PSC_STATE state);

    END_INTERFACE
} IPropertyStoreCacheVtbl;

interface IPropertyStoreCache {
    CONST_VTBL IPropertyStoreCacheVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyStoreCache_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyStoreCache_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyStoreCache_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyStore methods ***/
#define IPropertyStoreCache_GetCount(This,cProps) (This)->lpVtbl->GetCount(This,cProps)
#define IPropertyStoreCache_GetAt(This,iProp,pkey) (This)->lpVtbl->GetAt(This,iProp,pkey)
#define IPropertyStoreCache_GetValue(This,key,pv) (This)->lpVtbl->GetValue(This,key,pv)
#define IPropertyStoreCache_SetValue(This,key,propvar) (This)->lpVtbl->SetValue(This,key,propvar)
#define IPropertyStoreCache_Commit(This) (This)->lpVtbl->Commit(This)
/*** IPropertyStoreCache methods ***/
#define IPropertyStoreCache_GetState(This,key,pstate) (This)->lpVtbl->GetState(This,key,pstate)
#define IPropertyStoreCache_GetValueAndState(This,key,ppropvar,pstate) (This)->lpVtbl->GetValueAndState(This,key,ppropvar,pstate)
#define IPropertyStoreCache_SetState(This,key,state) (This)->lpVtbl->SetState(This,key,state)
#define IPropertyStoreCache_SetValueAndState(This,key,ppropvar,state) (This)->lpVtbl->SetValueAndState(This,key,ppropvar,state)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyStoreCache_QueryInterface(IPropertyStoreCache* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyStoreCache_AddRef(IPropertyStoreCache* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyStoreCache_Release(IPropertyStoreCache* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyStore methods ***/
static FORCEINLINE HRESULT IPropertyStoreCache_GetCount(IPropertyStoreCache* This,DWORD *cProps) {
    return This->lpVtbl->GetCount(This,cProps);
}
static FORCEINLINE HRESULT IPropertyStoreCache_GetAt(IPropertyStoreCache* This,DWORD iProp,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetAt(This,iProp,pkey);
}
static FORCEINLINE HRESULT IPropertyStoreCache_GetValue(IPropertyStoreCache* This,REFPROPERTYKEY key,PROPVARIANT *pv) {
    return This->lpVtbl->GetValue(This,key,pv);
}
static FORCEINLINE HRESULT IPropertyStoreCache_SetValue(IPropertyStoreCache* This,REFPROPERTYKEY key,REFPROPVARIANT propvar) {
    return This->lpVtbl->SetValue(This,key,propvar);
}
static FORCEINLINE HRESULT IPropertyStoreCache_Commit(IPropertyStoreCache* This) {
    return This->lpVtbl->Commit(This);
}
/*** IPropertyStoreCache methods ***/
static FORCEINLINE HRESULT IPropertyStoreCache_GetState(IPropertyStoreCache* This,REFPROPERTYKEY key,PSC_STATE *pstate) {
    return This->lpVtbl->GetState(This,key,pstate);
}
static FORCEINLINE HRESULT IPropertyStoreCache_GetValueAndState(IPropertyStoreCache* This,REFPROPERTYKEY key,PROPVARIANT *ppropvar,PSC_STATE *pstate) {
    return This->lpVtbl->GetValueAndState(This,key,ppropvar,pstate);
}
static FORCEINLINE HRESULT IPropertyStoreCache_SetState(IPropertyStoreCache* This,REFPROPERTYKEY key,PSC_STATE state) {
    return This->lpVtbl->SetState(This,key,state);
}
static FORCEINLINE HRESULT IPropertyStoreCache_SetValueAndState(IPropertyStoreCache* This,REFPROPERTYKEY key,const PROPVARIANT *ppropvar,PSC_STATE state) {
    return This->lpVtbl->SetValueAndState(This,key,ppropvar,state);
}
#endif
#endif

#endif


#endif  /* __IPropertyStoreCache_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyEnumType interface
 */
#ifndef __IPropertyEnumType_INTERFACE_DEFINED__
#define __IPropertyEnumType_INTERFACE_DEFINED__

typedef enum PROPENUMTYPE {
    PET_DISCRETEVALUE = 0,
    PET_RANGEDVALUE = 1,
    PET_DEFAULTVALUE = 2,
    PET_ENDRANGE = 3
} PROPENUMTYPE;

DEFINE_GUID(IID_IPropertyEnumType, 0x11e1fbf9, 0x2d56, 0x4a6b, 0x8d,0xb3, 0x7c,0xd1,0x93,0xa4,0x71,0xf2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("11e1fbf9-2d56-4a6b-8db3-7cd193a471f2")
IPropertyEnumType : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetEnumType(
        PROPENUMTYPE *penumtype) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetValue(
        PROPVARIANT *ppropvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRangeMinValue(
        PROPVARIANT *ppropvarMin) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRangeSetValue(
        PROPVARIANT *ppropvarSet) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayText(
        LPWSTR *ppszDisplay) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyEnumType, 0x11e1fbf9, 0x2d56, 0x4a6b, 0x8d,0xb3, 0x7c,0xd1,0x93,0xa4,0x71,0xf2)
#endif
#else
typedef struct IPropertyEnumTypeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyEnumType *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyEnumType *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyEnumType *This);

    /*** IPropertyEnumType methods ***/
    HRESULT (STDMETHODCALLTYPE *GetEnumType)(
        IPropertyEnumType *This,
        PROPENUMTYPE *penumtype);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IPropertyEnumType *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *GetRangeMinValue)(
        IPropertyEnumType *This,
        PROPVARIANT *ppropvarMin);

    HRESULT (STDMETHODCALLTYPE *GetRangeSetValue)(
        IPropertyEnumType *This,
        PROPVARIANT *ppropvarSet);

    HRESULT (STDMETHODCALLTYPE *GetDisplayText)(
        IPropertyEnumType *This,
        LPWSTR *ppszDisplay);

    END_INTERFACE
} IPropertyEnumTypeVtbl;

interface IPropertyEnumType {
    CONST_VTBL IPropertyEnumTypeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyEnumType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyEnumType_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyEnumType_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyEnumType methods ***/
#define IPropertyEnumType_GetEnumType(This,penumtype) (This)->lpVtbl->GetEnumType(This,penumtype)
#define IPropertyEnumType_GetValue(This,ppropvar) (This)->lpVtbl->GetValue(This,ppropvar)
#define IPropertyEnumType_GetRangeMinValue(This,ppropvarMin) (This)->lpVtbl->GetRangeMinValue(This,ppropvarMin)
#define IPropertyEnumType_GetRangeSetValue(This,ppropvarSet) (This)->lpVtbl->GetRangeSetValue(This,ppropvarSet)
#define IPropertyEnumType_GetDisplayText(This,ppszDisplay) (This)->lpVtbl->GetDisplayText(This,ppszDisplay)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyEnumType_QueryInterface(IPropertyEnumType* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyEnumType_AddRef(IPropertyEnumType* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyEnumType_Release(IPropertyEnumType* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyEnumType methods ***/
static FORCEINLINE HRESULT IPropertyEnumType_GetEnumType(IPropertyEnumType* This,PROPENUMTYPE *penumtype) {
    return This->lpVtbl->GetEnumType(This,penumtype);
}
static FORCEINLINE HRESULT IPropertyEnumType_GetValue(IPropertyEnumType* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->GetValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyEnumType_GetRangeMinValue(IPropertyEnumType* This,PROPVARIANT *ppropvarMin) {
    return This->lpVtbl->GetRangeMinValue(This,ppropvarMin);
}
static FORCEINLINE HRESULT IPropertyEnumType_GetRangeSetValue(IPropertyEnumType* This,PROPVARIANT *ppropvarSet) {
    return This->lpVtbl->GetRangeSetValue(This,ppropvarSet);
}
static FORCEINLINE HRESULT IPropertyEnumType_GetDisplayText(IPropertyEnumType* This,LPWSTR *ppszDisplay) {
    return This->lpVtbl->GetDisplayText(This,ppszDisplay);
}
#endif
#endif

#endif


#endif  /* __IPropertyEnumType_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyEnumType2 interface
 */
#ifndef __IPropertyEnumType2_INTERFACE_DEFINED__
#define __IPropertyEnumType2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyEnumType2, 0x9b6e051c, 0x5ddd, 0x4321, 0x90,0x70, 0xfe,0x2a,0xcb,0x55,0xe7,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9b6e051c-5ddd-4321-9070-fe2acb55e794")
IPropertyEnumType2 : public IPropertyEnumType
{
    virtual HRESULT STDMETHODCALLTYPE GetImageReference(
        LPWSTR *ppszImageRes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyEnumType2, 0x9b6e051c, 0x5ddd, 0x4321, 0x90,0x70, 0xfe,0x2a,0xcb,0x55,0xe7,0x94)
#endif
#else
typedef struct IPropertyEnumType2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyEnumType2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyEnumType2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyEnumType2 *This);

    /*** IPropertyEnumType methods ***/
    HRESULT (STDMETHODCALLTYPE *GetEnumType)(
        IPropertyEnumType2 *This,
        PROPENUMTYPE *penumtype);

    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IPropertyEnumType2 *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *GetRangeMinValue)(
        IPropertyEnumType2 *This,
        PROPVARIANT *ppropvarMin);

    HRESULT (STDMETHODCALLTYPE *GetRangeSetValue)(
        IPropertyEnumType2 *This,
        PROPVARIANT *ppropvarSet);

    HRESULT (STDMETHODCALLTYPE *GetDisplayText)(
        IPropertyEnumType2 *This,
        LPWSTR *ppszDisplay);

    /*** IPropertyEnumType2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetImageReference)(
        IPropertyEnumType2 *This,
        LPWSTR *ppszImageRes);

    END_INTERFACE
} IPropertyEnumType2Vtbl;

interface IPropertyEnumType2 {
    CONST_VTBL IPropertyEnumType2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyEnumType2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyEnumType2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyEnumType2_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyEnumType methods ***/
#define IPropertyEnumType2_GetEnumType(This,penumtype) (This)->lpVtbl->GetEnumType(This,penumtype)
#define IPropertyEnumType2_GetValue(This,ppropvar) (This)->lpVtbl->GetValue(This,ppropvar)
#define IPropertyEnumType2_GetRangeMinValue(This,ppropvarMin) (This)->lpVtbl->GetRangeMinValue(This,ppropvarMin)
#define IPropertyEnumType2_GetRangeSetValue(This,ppropvarSet) (This)->lpVtbl->GetRangeSetValue(This,ppropvarSet)
#define IPropertyEnumType2_GetDisplayText(This,ppszDisplay) (This)->lpVtbl->GetDisplayText(This,ppszDisplay)
/*** IPropertyEnumType2 methods ***/
#define IPropertyEnumType2_GetImageReference(This,ppszImageRes) (This)->lpVtbl->GetImageReference(This,ppszImageRes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyEnumType2_QueryInterface(IPropertyEnumType2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyEnumType2_AddRef(IPropertyEnumType2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyEnumType2_Release(IPropertyEnumType2* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyEnumType methods ***/
static FORCEINLINE HRESULT IPropertyEnumType2_GetEnumType(IPropertyEnumType2* This,PROPENUMTYPE *penumtype) {
    return This->lpVtbl->GetEnumType(This,penumtype);
}
static FORCEINLINE HRESULT IPropertyEnumType2_GetValue(IPropertyEnumType2* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->GetValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyEnumType2_GetRangeMinValue(IPropertyEnumType2* This,PROPVARIANT *ppropvarMin) {
    return This->lpVtbl->GetRangeMinValue(This,ppropvarMin);
}
static FORCEINLINE HRESULT IPropertyEnumType2_GetRangeSetValue(IPropertyEnumType2* This,PROPVARIANT *ppropvarSet) {
    return This->lpVtbl->GetRangeSetValue(This,ppropvarSet);
}
static FORCEINLINE HRESULT IPropertyEnumType2_GetDisplayText(IPropertyEnumType2* This,LPWSTR *ppszDisplay) {
    return This->lpVtbl->GetDisplayText(This,ppszDisplay);
}
/*** IPropertyEnumType2 methods ***/
static FORCEINLINE HRESULT IPropertyEnumType2_GetImageReference(IPropertyEnumType2* This,LPWSTR *ppszImageRes) {
    return This->lpVtbl->GetImageReference(This,ppszImageRes);
}
#endif
#endif

#endif


#endif  /* __IPropertyEnumType2_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyEnumTypeList interface
 */
#ifndef __IPropertyEnumTypeList_INTERFACE_DEFINED__
#define __IPropertyEnumTypeList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyEnumTypeList, 0xa99400f4, 0x3d84, 0x4557, 0x94,0xba, 0x12,0x42,0xfb,0x2c,0xc9,0xa6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a99400f4-3d84-4557-94ba-1242fb2cc9a6")
IPropertyEnumTypeList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCount(
        UINT *pctypes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAt(
        UINT itype,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConditionAt(
        UINT nIndex,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindMatchingIndex(
        REFPROPVARIANT propvarCmp,
        UINT *pnIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyEnumTypeList, 0xa99400f4, 0x3d84, 0x4557, 0x94,0xba, 0x12,0x42,0xfb,0x2c,0xc9,0xa6)
#endif
#else
typedef struct IPropertyEnumTypeListVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyEnumTypeList *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyEnumTypeList *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyEnumTypeList *This);

    /*** IPropertyEnumTypeList methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IPropertyEnumTypeList *This,
        UINT *pctypes);

    HRESULT (STDMETHODCALLTYPE *GetAt)(
        IPropertyEnumTypeList *This,
        UINT itype,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetConditionAt)(
        IPropertyEnumTypeList *This,
        UINT nIndex,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *FindMatchingIndex)(
        IPropertyEnumTypeList *This,
        REFPROPVARIANT propvarCmp,
        UINT *pnIndex);

    END_INTERFACE
} IPropertyEnumTypeListVtbl;

interface IPropertyEnumTypeList {
    CONST_VTBL IPropertyEnumTypeListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyEnumTypeList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyEnumTypeList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyEnumTypeList_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyEnumTypeList methods ***/
#define IPropertyEnumTypeList_GetCount(This,pctypes) (This)->lpVtbl->GetCount(This,pctypes)
#define IPropertyEnumTypeList_GetAt(This,itype,riid,ppv) (This)->lpVtbl->GetAt(This,itype,riid,ppv)
#define IPropertyEnumTypeList_GetConditionAt(This,nIndex,riid,ppv) (This)->lpVtbl->GetConditionAt(This,nIndex,riid,ppv)
#define IPropertyEnumTypeList_FindMatchingIndex(This,propvarCmp,pnIndex) (This)->lpVtbl->FindMatchingIndex(This,propvarCmp,pnIndex)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyEnumTypeList_QueryInterface(IPropertyEnumTypeList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyEnumTypeList_AddRef(IPropertyEnumTypeList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyEnumTypeList_Release(IPropertyEnumTypeList* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyEnumTypeList methods ***/
static FORCEINLINE HRESULT IPropertyEnumTypeList_GetCount(IPropertyEnumTypeList* This,UINT *pctypes) {
    return This->lpVtbl->GetCount(This,pctypes);
}
static FORCEINLINE HRESULT IPropertyEnumTypeList_GetAt(IPropertyEnumTypeList* This,UINT itype,REFIID riid,void **ppv) {
    return This->lpVtbl->GetAt(This,itype,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyEnumTypeList_GetConditionAt(IPropertyEnumTypeList* This,UINT nIndex,REFIID riid,void **ppv) {
    return This->lpVtbl->GetConditionAt(This,nIndex,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyEnumTypeList_FindMatchingIndex(IPropertyEnumTypeList* This,REFPROPVARIANT propvarCmp,UINT *pnIndex) {
    return This->lpVtbl->FindMatchingIndex(This,propvarCmp,pnIndex);
}
#endif
#endif

#endif


#endif  /* __IPropertyEnumTypeList_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyDescription interface
 */
#ifndef __IPropertyDescription_INTERFACE_DEFINED__
#define __IPropertyDescription_INTERFACE_DEFINED__

typedef enum PROPDESC_TYPE_FLAGS {
    PDTF_DEFAULT = 0x0,
    PDTF_MULTIPLEVALUES = 0x1,
    PDTF_ISINNATE = 0x2,
    PDTF_ISGROUP = 0x4,
    PDTF_CANGROUPBY = 0x8,
    PDTF_CANSTACKBY = 0x10,
    PDTF_ISTREEPROPERTY = 0x20,
    PDTF_INCLUDEINFULLTEXTQUERY = 0x40,
    PDTF_ISVIEWABLE = 0x80,
    PDTF_ISQUERYABLE = 0x100,
    PDTF_CANBEPURGED = 0x200,
    PDTF_SEARCHRAWVALUE = 0x400,
    PDTF_ISSYSTEMPROPERTY = 0x80000000,
    PDTF_MASK_ALL = 0x800007ff
} PROPDESC_TYPE_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_TYPE_FLAGS)

typedef enum PROPDESC_VIEW_FLAGS {
    PDVF_DEFAULT = 0x0,
    PDVF_CENTERALIGN = 0x1,
    PDVF_RIGHTALIGN = 0x2,
    PDVF_BEGINNEWGROUP = 0x4,
    PDVF_FILLAREA = 0x8,
    PDVF_SORTDESCENDING = 0x10,
    PDVF_SHOWONLYIFPRESENT = 0x20,
    PDVF_SHOWBYDEFAULT = 0x40,
    PDVF_SHOWINPRIMARYLIST = 0x80,
    PDVF_SHOWINSECONDARYLIST = 0x100,
    PDVF_HIDELABEL = 0x200,
    PDVF_HIDDEN = 0x800,
    PDVF_CANWRAP = 0x1000,
    PDVF_MASK_ALL = 0x1bff
} PROPDESC_VIEW_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_VIEW_FLAGS)

typedef enum PROPDESC_DISPLAYTYPE {
    PDDT_STRING = 0,
    PDDT_NUMBER = 1,
    PDDT_BOOLEAN = 2,
    PDDT_DATETIME = 3,
    PDDT_ENUMERATED = 4
} PROPDESC_DISPLAYTYPE;

typedef enum PROPDESC_GROUPING_RANGE {
    PDGR_DISCRETE = 0,
    PDGR_ALPHANUMERIC = 1,
    PDGR_SIZE = 2,
    PDGR_DYNAMIC = 3,
    PDGR_DATE = 4,
    PDGR_PERCENT = 5,
    PDGR_ENUMERATED = 6
} PROPDESC_GROUPING_RANGE;

typedef enum PROPDESC_FORMAT_FLAGS {
    PDFF_DEFAULT = 0x0,
    PDFF_PREFIXNAME = 0x1,
    PDFF_FILENAME = 0x2,
    PDFF_ALWAYSKB = 0x4,
    PDFF_RESERVED_RIGHTTOLEFT = 0x8,
    PDFF_SHORTTIME = 0x10,
    PDFF_LONGTIME = 0x20,
    PDFF_HIDETIME = 0x40,
    PDFF_SHORTDATE = 0x80,
    PDFF_LONGDATE = 0x100,
    PDFF_HIDEDATE = 0x200,
    PDFF_RELATIVEDATE = 0x400,
    PDFF_USEEDITINVITATION = 0x800,
    PDFF_READONLY = 0x1000,
    PDFF_NOAUTOREADINGORDER = 0x2000
} PROPDESC_FORMAT_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_FORMAT_FLAGS)

typedef enum PROPDESC_SORTDESCRIPTION {
    PDSD_GENERAL = 0,
    PDSD_A_Z = 1,
    PDSD_LOWEST_HIGHEST = 2,
    PDSD_SMALLEST_BIGGEST = 3,
    PDSD_OLDEST_NEWEST = 4
} PROPDESC_SORTDESCRIPTION;

typedef enum PROPDESC_RELATIVEDESCRIPTION_TYPE {
    PDRDT_GENERAL = 0,
    PDRDT_DATE = 1,
    PDRDT_SIZE = 2,
    PDRDT_COUNT = 3,
    PDRDT_REVISION = 4,
    PDRDT_LENGTH = 5,
    PDRDT_DURATION = 6,
    PDRDT_SPEED = 7,
    PDRDT_RATE = 8,
    PDRDT_RATING = 9,
    PDRDT_PRIORITY = 10
} PROPDESC_RELATIVEDESCRIPTION_TYPE;

typedef enum PROPDESC_AGGREGATION_TYPE {
    PDAT_DEFAULT = 0,
    PDAT_FIRST = 1,
    PDAT_SUM = 2,
    PDAT_AVERAGE = 3,
    PDAT_DATERANGE = 4,
    PDAT_UNION = 5,
    PDAT_MAX = 6,
    PDAT_MIN = 7
} PROPDESC_AGGREGATION_TYPE;

typedef enum PROPDESC_CONDITION_TYPE {
    PDCOT_NONE = 0,
    PDCOT_STRING = 1,
    PDCOT_SIZE = 2,
    PDCOT_DATETIME = 3,
    PDCOT_BOOLEAN = 4,
    PDCOT_NUMBER = 5
} PROPDESC_CONDITION_TYPE;

DEFINE_GUID(IID_IPropertyDescription, 0x6f79d558, 0x3e96, 0x4549, 0xa1,0xd1, 0x7d,0x75,0xd2,0x28,0x88,0x14);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6f79d558-3e96-4549-a1d1-7d75d2288814")
IPropertyDescription : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPropertyKey(
        PROPERTYKEY *pkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCanonicalName(
        LPWSTR *ppszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyType(
        VARTYPE *pvartype) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
        LPWSTR *ppszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEditInvitation(
        LPWSTR *ppszInvite) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTypeFlags(
        PROPDESC_TYPE_FLAGS mask,
        PROPDESC_TYPE_FLAGS *ppdtFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetViewFlags(
        PROPDESC_VIEW_FLAGS *ppdvFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnWidth(
        UINT *pcxChars) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayType(
        PROPDESC_DISPLAYTYPE *pdisplaytype) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnState(
        SHCOLSTATEF *pcsFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGroupingRange(
        PROPDESC_GROUPING_RANGE *pgr) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRelativeDescriptionType(
        PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRelativeDescription(
        REFPROPVARIANT propvar1,
        REFPROPVARIANT propvar2,
        LPWSTR *ppszDesc1,
        LPWSTR *ppszDesc2) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSortDescription(
        PROPDESC_SORTDESCRIPTION *psd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSortDescriptionLabel(
        WINBOOL fDescending,
        LPWSTR *ppszDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAggregationType(
        PROPDESC_AGGREGATION_TYPE *paggtype) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConditionType(
        PROPDESC_CONDITION_TYPE *pcontype,
        CONDITION_OPERATION *popDefault) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumTypeList(
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE CoerceToCanonicalValue(
        PROPVARIANT *ppropvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE FormatForDisplay(
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdfFlags,
        LPWSTR *ppszDisplay) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsValueCanonical(
        REFPROPVARIANT propvar) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyDescription, 0x6f79d558, 0x3e96, 0x4549, 0xa1,0xd1, 0x7d,0x75,0xd2,0x28,0x88,0x14)
#endif
#else
typedef struct IPropertyDescriptionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyDescription *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyDescription *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyDescription *This);

    /*** IPropertyDescription methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IPropertyDescription *This,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetCanonicalName)(
        IPropertyDescription *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetPropertyType)(
        IPropertyDescription *This,
        VARTYPE *pvartype);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IPropertyDescription *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetEditInvitation)(
        IPropertyDescription *This,
        LPWSTR *ppszInvite);

    HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
        IPropertyDescription *This,
        PROPDESC_TYPE_FLAGS mask,
        PROPDESC_TYPE_FLAGS *ppdtFlags);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        IPropertyDescription *This,
        PROPDESC_VIEW_FLAGS *ppdvFlags);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumnWidth)(
        IPropertyDescription *This,
        UINT *pcxChars);

    HRESULT (STDMETHODCALLTYPE *GetDisplayType)(
        IPropertyDescription *This,
        PROPDESC_DISPLAYTYPE *pdisplaytype);

    HRESULT (STDMETHODCALLTYPE *GetColumnState)(
        IPropertyDescription *This,
        SHCOLSTATEF *pcsFlags);

    HRESULT (STDMETHODCALLTYPE *GetGroupingRange)(
        IPropertyDescription *This,
        PROPDESC_GROUPING_RANGE *pgr);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescriptionType)(
        IPropertyDescription *This,
        PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescription)(
        IPropertyDescription *This,
        REFPROPVARIANT propvar1,
        REFPROPVARIANT propvar2,
        LPWSTR *ppszDesc1,
        LPWSTR *ppszDesc2);

    HRESULT (STDMETHODCALLTYPE *GetSortDescription)(
        IPropertyDescription *This,
        PROPDESC_SORTDESCRIPTION *psd);

    HRESULT (STDMETHODCALLTYPE *GetSortDescriptionLabel)(
        IPropertyDescription *This,
        WINBOOL fDescending,
        LPWSTR *ppszDescription);

    HRESULT (STDMETHODCALLTYPE *GetAggregationType)(
        IPropertyDescription *This,
        PROPDESC_AGGREGATION_TYPE *paggtype);

    HRESULT (STDMETHODCALLTYPE *GetConditionType)(
        IPropertyDescription *This,
        PROPDESC_CONDITION_TYPE *pcontype,
        CONDITION_OPERATION *popDefault);

    HRESULT (STDMETHODCALLTYPE *GetEnumTypeList)(
        IPropertyDescription *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *CoerceToCanonicalValue)(
        IPropertyDescription *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertyDescription *This,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdfFlags,
        LPWSTR *ppszDisplay);

    HRESULT (STDMETHODCALLTYPE *IsValueCanonical)(
        IPropertyDescription *This,
        REFPROPVARIANT propvar);

    END_INTERFACE
} IPropertyDescriptionVtbl;

interface IPropertyDescription {
    CONST_VTBL IPropertyDescriptionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyDescription_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyDescription_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyDescription_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyDescription methods ***/
#define IPropertyDescription_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
#define IPropertyDescription_GetCanonicalName(This,ppszName) (This)->lpVtbl->GetCanonicalName(This,ppszName)
#define IPropertyDescription_GetPropertyType(This,pvartype) (This)->lpVtbl->GetPropertyType(This,pvartype)
#define IPropertyDescription_GetDisplayName(This,ppszName) (This)->lpVtbl->GetDisplayName(This,ppszName)
#define IPropertyDescription_GetEditInvitation(This,ppszInvite) (This)->lpVtbl->GetEditInvitation(This,ppszInvite)
#define IPropertyDescription_GetTypeFlags(This,mask,ppdtFlags) (This)->lpVtbl->GetTypeFlags(This,mask,ppdtFlags)
#define IPropertyDescription_GetViewFlags(This,ppdvFlags) (This)->lpVtbl->GetViewFlags(This,ppdvFlags)
#define IPropertyDescription_GetDefaultColumnWidth(This,pcxChars) (This)->lpVtbl->GetDefaultColumnWidth(This,pcxChars)
#define IPropertyDescription_GetDisplayType(This,pdisplaytype) (This)->lpVtbl->GetDisplayType(This,pdisplaytype)
#define IPropertyDescription_GetColumnState(This,pcsFlags) (This)->lpVtbl->GetColumnState(This,pcsFlags)
#define IPropertyDescription_GetGroupingRange(This,pgr) (This)->lpVtbl->GetGroupingRange(This,pgr)
#define IPropertyDescription_GetRelativeDescriptionType(This,prdt) (This)->lpVtbl->GetRelativeDescriptionType(This,prdt)
#define IPropertyDescription_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) (This)->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)
#define IPropertyDescription_GetSortDescription(This,psd) (This)->lpVtbl->GetSortDescription(This,psd)
#define IPropertyDescription_GetSortDescriptionLabel(This,fDescending,ppszDescription) (This)->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription)
#define IPropertyDescription_GetAggregationType(This,paggtype) (This)->lpVtbl->GetAggregationType(This,paggtype)
#define IPropertyDescription_GetConditionType(This,pcontype,popDefault) (This)->lpVtbl->GetConditionType(This,pcontype,popDefault)
#define IPropertyDescription_GetEnumTypeList(This,riid,ppv) (This)->lpVtbl->GetEnumTypeList(This,riid,ppv)
#define IPropertyDescription_CoerceToCanonicalValue(This,ppropvar) (This)->lpVtbl->CoerceToCanonicalValue(This,ppropvar)
#define IPropertyDescription_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) (This)->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)
#define IPropertyDescription_IsValueCanonical(This,propvar) (This)->lpVtbl->IsValueCanonical(This,propvar)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyDescription_QueryInterface(IPropertyDescription* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyDescription_AddRef(IPropertyDescription* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyDescription_Release(IPropertyDescription* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyDescription methods ***/
static FORCEINLINE HRESULT IPropertyDescription_GetPropertyKey(IPropertyDescription* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
static FORCEINLINE HRESULT IPropertyDescription_GetCanonicalName(IPropertyDescription* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetCanonicalName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescription_GetPropertyType(IPropertyDescription* This,VARTYPE *pvartype) {
    return This->lpVtbl->GetPropertyType(This,pvartype);
}
static FORCEINLINE HRESULT IPropertyDescription_GetDisplayName(IPropertyDescription* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescription_GetEditInvitation(IPropertyDescription* This,LPWSTR *ppszInvite) {
    return This->lpVtbl->GetEditInvitation(This,ppszInvite);
}
static FORCEINLINE HRESULT IPropertyDescription_GetTypeFlags(IPropertyDescription* This,PROPDESC_TYPE_FLAGS mask,PROPDESC_TYPE_FLAGS *ppdtFlags) {
    return This->lpVtbl->GetTypeFlags(This,mask,ppdtFlags);
}
static FORCEINLINE HRESULT IPropertyDescription_GetViewFlags(IPropertyDescription* This,PROPDESC_VIEW_FLAGS *ppdvFlags) {
    return This->lpVtbl->GetViewFlags(This,ppdvFlags);
}
static FORCEINLINE HRESULT IPropertyDescription_GetDefaultColumnWidth(IPropertyDescription* This,UINT *pcxChars) {
    return This->lpVtbl->GetDefaultColumnWidth(This,pcxChars);
}
static FORCEINLINE HRESULT IPropertyDescription_GetDisplayType(IPropertyDescription* This,PROPDESC_DISPLAYTYPE *pdisplaytype) {
    return This->lpVtbl->GetDisplayType(This,pdisplaytype);
}
static FORCEINLINE HRESULT IPropertyDescription_GetColumnState(IPropertyDescription* This,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetColumnState(This,pcsFlags);
}
static FORCEINLINE HRESULT IPropertyDescription_GetGroupingRange(IPropertyDescription* This,PROPDESC_GROUPING_RANGE *pgr) {
    return This->lpVtbl->GetGroupingRange(This,pgr);
}
static FORCEINLINE HRESULT IPropertyDescription_GetRelativeDescriptionType(IPropertyDescription* This,PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) {
    return This->lpVtbl->GetRelativeDescriptionType(This,prdt);
}
static FORCEINLINE HRESULT IPropertyDescription_GetRelativeDescription(IPropertyDescription* This,REFPROPVARIANT propvar1,REFPROPVARIANT propvar2,LPWSTR *ppszDesc1,LPWSTR *ppszDesc2) {
    return This->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2);
}
static FORCEINLINE HRESULT IPropertyDescription_GetSortDescription(IPropertyDescription* This,PROPDESC_SORTDESCRIPTION *psd) {
    return This->lpVtbl->GetSortDescription(This,psd);
}
static FORCEINLINE HRESULT IPropertyDescription_GetSortDescriptionLabel(IPropertyDescription* This,WINBOOL fDescending,LPWSTR *ppszDescription) {
    return This->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription);
}
static FORCEINLINE HRESULT IPropertyDescription_GetAggregationType(IPropertyDescription* This,PROPDESC_AGGREGATION_TYPE *paggtype) {
    return This->lpVtbl->GetAggregationType(This,paggtype);
}
static FORCEINLINE HRESULT IPropertyDescription_GetConditionType(IPropertyDescription* This,PROPDESC_CONDITION_TYPE *pcontype,CONDITION_OPERATION *popDefault) {
    return This->lpVtbl->GetConditionType(This,pcontype,popDefault);
}
static FORCEINLINE HRESULT IPropertyDescription_GetEnumTypeList(IPropertyDescription* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetEnumTypeList(This,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyDescription_CoerceToCanonicalValue(IPropertyDescription* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->CoerceToCanonicalValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyDescription_FormatForDisplay(IPropertyDescription* This,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdfFlags,LPWSTR *ppszDisplay) {
    return This->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay);
}
static FORCEINLINE HRESULT IPropertyDescription_IsValueCanonical(IPropertyDescription* This,REFPROPVARIANT propvar) {
    return This->lpVtbl->IsValueCanonical(This,propvar);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IPropertyDescription_RemoteCoerceToCanonicalValue_Proxy(
    IPropertyDescription* This,
    REFPROPVARIANT propvar,
    PROPVARIANT *ppropvar);
void __RPC_STUB IPropertyDescription_RemoteCoerceToCanonicalValue_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IPropertyDescription_CoerceToCanonicalValue_Proxy(
    IPropertyDescription* This,
    PROPVARIANT *ppropvar);
HRESULT __RPC_STUB IPropertyDescription_CoerceToCanonicalValue_Stub(
    IPropertyDescription* This,
    REFPROPVARIANT propvar,
    PROPVARIANT *ppropvar);

#endif  /* __IPropertyDescription_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyDescription2 interface
 */
#ifndef __IPropertyDescription2_INTERFACE_DEFINED__
#define __IPropertyDescription2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyDescription2, 0x57d2eded, 0x5062, 0x400e, 0xb1,0x07, 0x5d,0xae,0x79,0xfe,0x57,0xa6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("57d2eded-5062-400e-b107-5dae79fe57a6")
IPropertyDescription2 : public IPropertyDescription
{
    virtual HRESULT STDMETHODCALLTYPE GetImageReferenceForValue(
        REFPROPVARIANT propvar,
        LPWSTR *ppszImageRes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyDescription2, 0x57d2eded, 0x5062, 0x400e, 0xb1,0x07, 0x5d,0xae,0x79,0xfe,0x57,0xa6)
#endif
#else
typedef struct IPropertyDescription2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyDescription2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyDescription2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyDescription2 *This);

    /*** IPropertyDescription methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IPropertyDescription2 *This,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetCanonicalName)(
        IPropertyDescription2 *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetPropertyType)(
        IPropertyDescription2 *This,
        VARTYPE *pvartype);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IPropertyDescription2 *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetEditInvitation)(
        IPropertyDescription2 *This,
        LPWSTR *ppszInvite);

    HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
        IPropertyDescription2 *This,
        PROPDESC_TYPE_FLAGS mask,
        PROPDESC_TYPE_FLAGS *ppdtFlags);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        IPropertyDescription2 *This,
        PROPDESC_VIEW_FLAGS *ppdvFlags);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumnWidth)(
        IPropertyDescription2 *This,
        UINT *pcxChars);

    HRESULT (STDMETHODCALLTYPE *GetDisplayType)(
        IPropertyDescription2 *This,
        PROPDESC_DISPLAYTYPE *pdisplaytype);

    HRESULT (STDMETHODCALLTYPE *GetColumnState)(
        IPropertyDescription2 *This,
        SHCOLSTATEF *pcsFlags);

    HRESULT (STDMETHODCALLTYPE *GetGroupingRange)(
        IPropertyDescription2 *This,
        PROPDESC_GROUPING_RANGE *pgr);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescriptionType)(
        IPropertyDescription2 *This,
        PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescription)(
        IPropertyDescription2 *This,
        REFPROPVARIANT propvar1,
        REFPROPVARIANT propvar2,
        LPWSTR *ppszDesc1,
        LPWSTR *ppszDesc2);

    HRESULT (STDMETHODCALLTYPE *GetSortDescription)(
        IPropertyDescription2 *This,
        PROPDESC_SORTDESCRIPTION *psd);

    HRESULT (STDMETHODCALLTYPE *GetSortDescriptionLabel)(
        IPropertyDescription2 *This,
        WINBOOL fDescending,
        LPWSTR *ppszDescription);

    HRESULT (STDMETHODCALLTYPE *GetAggregationType)(
        IPropertyDescription2 *This,
        PROPDESC_AGGREGATION_TYPE *paggtype);

    HRESULT (STDMETHODCALLTYPE *GetConditionType)(
        IPropertyDescription2 *This,
        PROPDESC_CONDITION_TYPE *pcontype,
        CONDITION_OPERATION *popDefault);

    HRESULT (STDMETHODCALLTYPE *GetEnumTypeList)(
        IPropertyDescription2 *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *CoerceToCanonicalValue)(
        IPropertyDescription2 *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertyDescription2 *This,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdfFlags,
        LPWSTR *ppszDisplay);

    HRESULT (STDMETHODCALLTYPE *IsValueCanonical)(
        IPropertyDescription2 *This,
        REFPROPVARIANT propvar);

    /*** IPropertyDescription2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetImageReferenceForValue)(
        IPropertyDescription2 *This,
        REFPROPVARIANT propvar,
        LPWSTR *ppszImageRes);

    END_INTERFACE
} IPropertyDescription2Vtbl;

interface IPropertyDescription2 {
    CONST_VTBL IPropertyDescription2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyDescription2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyDescription2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyDescription2_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyDescription methods ***/
#define IPropertyDescription2_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
#define IPropertyDescription2_GetCanonicalName(This,ppszName) (This)->lpVtbl->GetCanonicalName(This,ppszName)
#define IPropertyDescription2_GetPropertyType(This,pvartype) (This)->lpVtbl->GetPropertyType(This,pvartype)
#define IPropertyDescription2_GetDisplayName(This,ppszName) (This)->lpVtbl->GetDisplayName(This,ppszName)
#define IPropertyDescription2_GetEditInvitation(This,ppszInvite) (This)->lpVtbl->GetEditInvitation(This,ppszInvite)
#define IPropertyDescription2_GetTypeFlags(This,mask,ppdtFlags) (This)->lpVtbl->GetTypeFlags(This,mask,ppdtFlags)
#define IPropertyDescription2_GetViewFlags(This,ppdvFlags) (This)->lpVtbl->GetViewFlags(This,ppdvFlags)
#define IPropertyDescription2_GetDefaultColumnWidth(This,pcxChars) (This)->lpVtbl->GetDefaultColumnWidth(This,pcxChars)
#define IPropertyDescription2_GetDisplayType(This,pdisplaytype) (This)->lpVtbl->GetDisplayType(This,pdisplaytype)
#define IPropertyDescription2_GetColumnState(This,pcsFlags) (This)->lpVtbl->GetColumnState(This,pcsFlags)
#define IPropertyDescription2_GetGroupingRange(This,pgr) (This)->lpVtbl->GetGroupingRange(This,pgr)
#define IPropertyDescription2_GetRelativeDescriptionType(This,prdt) (This)->lpVtbl->GetRelativeDescriptionType(This,prdt)
#define IPropertyDescription2_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) (This)->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)
#define IPropertyDescription2_GetSortDescription(This,psd) (This)->lpVtbl->GetSortDescription(This,psd)
#define IPropertyDescription2_GetSortDescriptionLabel(This,fDescending,ppszDescription) (This)->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription)
#define IPropertyDescription2_GetAggregationType(This,paggtype) (This)->lpVtbl->GetAggregationType(This,paggtype)
#define IPropertyDescription2_GetConditionType(This,pcontype,popDefault) (This)->lpVtbl->GetConditionType(This,pcontype,popDefault)
#define IPropertyDescription2_GetEnumTypeList(This,riid,ppv) (This)->lpVtbl->GetEnumTypeList(This,riid,ppv)
#define IPropertyDescription2_CoerceToCanonicalValue(This,ppropvar) (This)->lpVtbl->CoerceToCanonicalValue(This,ppropvar)
#define IPropertyDescription2_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) (This)->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)
#define IPropertyDescription2_IsValueCanonical(This,propvar) (This)->lpVtbl->IsValueCanonical(This,propvar)
/*** IPropertyDescription2 methods ***/
#define IPropertyDescription2_GetImageReferenceForValue(This,propvar,ppszImageRes) (This)->lpVtbl->GetImageReferenceForValue(This,propvar,ppszImageRes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyDescription2_QueryInterface(IPropertyDescription2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyDescription2_AddRef(IPropertyDescription2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyDescription2_Release(IPropertyDescription2* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyDescription methods ***/
static FORCEINLINE HRESULT IPropertyDescription2_GetPropertyKey(IPropertyDescription2* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetCanonicalName(IPropertyDescription2* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetCanonicalName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetPropertyType(IPropertyDescription2* This,VARTYPE *pvartype) {
    return This->lpVtbl->GetPropertyType(This,pvartype);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetDisplayName(IPropertyDescription2* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetEditInvitation(IPropertyDescription2* This,LPWSTR *ppszInvite) {
    return This->lpVtbl->GetEditInvitation(This,ppszInvite);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetTypeFlags(IPropertyDescription2* This,PROPDESC_TYPE_FLAGS mask,PROPDESC_TYPE_FLAGS *ppdtFlags) {
    return This->lpVtbl->GetTypeFlags(This,mask,ppdtFlags);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetViewFlags(IPropertyDescription2* This,PROPDESC_VIEW_FLAGS *ppdvFlags) {
    return This->lpVtbl->GetViewFlags(This,ppdvFlags);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetDefaultColumnWidth(IPropertyDescription2* This,UINT *pcxChars) {
    return This->lpVtbl->GetDefaultColumnWidth(This,pcxChars);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetDisplayType(IPropertyDescription2* This,PROPDESC_DISPLAYTYPE *pdisplaytype) {
    return This->lpVtbl->GetDisplayType(This,pdisplaytype);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetColumnState(IPropertyDescription2* This,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetColumnState(This,pcsFlags);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetGroupingRange(IPropertyDescription2* This,PROPDESC_GROUPING_RANGE *pgr) {
    return This->lpVtbl->GetGroupingRange(This,pgr);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetRelativeDescriptionType(IPropertyDescription2* This,PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) {
    return This->lpVtbl->GetRelativeDescriptionType(This,prdt);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetRelativeDescription(IPropertyDescription2* This,REFPROPVARIANT propvar1,REFPROPVARIANT propvar2,LPWSTR *ppszDesc1,LPWSTR *ppszDesc2) {
    return This->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetSortDescription(IPropertyDescription2* This,PROPDESC_SORTDESCRIPTION *psd) {
    return This->lpVtbl->GetSortDescription(This,psd);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetSortDescriptionLabel(IPropertyDescription2* This,WINBOOL fDescending,LPWSTR *ppszDescription) {
    return This->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetAggregationType(IPropertyDescription2* This,PROPDESC_AGGREGATION_TYPE *paggtype) {
    return This->lpVtbl->GetAggregationType(This,paggtype);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetConditionType(IPropertyDescription2* This,PROPDESC_CONDITION_TYPE *pcontype,CONDITION_OPERATION *popDefault) {
    return This->lpVtbl->GetConditionType(This,pcontype,popDefault);
}
static FORCEINLINE HRESULT IPropertyDescription2_GetEnumTypeList(IPropertyDescription2* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetEnumTypeList(This,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyDescription2_CoerceToCanonicalValue(IPropertyDescription2* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->CoerceToCanonicalValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyDescription2_FormatForDisplay(IPropertyDescription2* This,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdfFlags,LPWSTR *ppszDisplay) {
    return This->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay);
}
static FORCEINLINE HRESULT IPropertyDescription2_IsValueCanonical(IPropertyDescription2* This,REFPROPVARIANT propvar) {
    return This->lpVtbl->IsValueCanonical(This,propvar);
}
/*** IPropertyDescription2 methods ***/
static FORCEINLINE HRESULT IPropertyDescription2_GetImageReferenceForValue(IPropertyDescription2* This,REFPROPVARIANT propvar,LPWSTR *ppszImageRes) {
    return This->lpVtbl->GetImageReferenceForValue(This,propvar,ppszImageRes);
}
#endif
#endif

#endif


#endif  /* __IPropertyDescription2_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyDescriptionAliasInfo interface
 */
#ifndef __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__
#define __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyDescriptionAliasInfo, 0xf67104fc, 0x2af9, 0x46fd, 0xb3,0x2d, 0x24,0x3c,0x14,0x04,0xf3,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f67104fc-2af9-46fd-b32d-243c1404f3d1")
IPropertyDescriptionAliasInfo : public IPropertyDescription
{
    virtual HRESULT STDMETHODCALLTYPE GetSortByAlias(
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAdditionalSortByAliases(
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyDescriptionAliasInfo, 0xf67104fc, 0x2af9, 0x46fd, 0xb3,0x2d, 0x24,0x3c,0x14,0x04,0xf3,0xd1)
#endif
#else
typedef struct IPropertyDescriptionAliasInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyDescriptionAliasInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyDescriptionAliasInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyDescriptionAliasInfo *This);

    /*** IPropertyDescription methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IPropertyDescriptionAliasInfo *This,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetCanonicalName)(
        IPropertyDescriptionAliasInfo *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetPropertyType)(
        IPropertyDescriptionAliasInfo *This,
        VARTYPE *pvartype);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IPropertyDescriptionAliasInfo *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetEditInvitation)(
        IPropertyDescriptionAliasInfo *This,
        LPWSTR *ppszInvite);

    HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_TYPE_FLAGS mask,
        PROPDESC_TYPE_FLAGS *ppdtFlags);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_VIEW_FLAGS *ppdvFlags);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumnWidth)(
        IPropertyDescriptionAliasInfo *This,
        UINT *pcxChars);

    HRESULT (STDMETHODCALLTYPE *GetDisplayType)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_DISPLAYTYPE *pdisplaytype);

    HRESULT (STDMETHODCALLTYPE *GetColumnState)(
        IPropertyDescriptionAliasInfo *This,
        SHCOLSTATEF *pcsFlags);

    HRESULT (STDMETHODCALLTYPE *GetGroupingRange)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_GROUPING_RANGE *pgr);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescriptionType)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescription)(
        IPropertyDescriptionAliasInfo *This,
        REFPROPVARIANT propvar1,
        REFPROPVARIANT propvar2,
        LPWSTR *ppszDesc1,
        LPWSTR *ppszDesc2);

    HRESULT (STDMETHODCALLTYPE *GetSortDescription)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_SORTDESCRIPTION *psd);

    HRESULT (STDMETHODCALLTYPE *GetSortDescriptionLabel)(
        IPropertyDescriptionAliasInfo *This,
        WINBOOL fDescending,
        LPWSTR *ppszDescription);

    HRESULT (STDMETHODCALLTYPE *GetAggregationType)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_AGGREGATION_TYPE *paggtype);

    HRESULT (STDMETHODCALLTYPE *GetConditionType)(
        IPropertyDescriptionAliasInfo *This,
        PROPDESC_CONDITION_TYPE *pcontype,
        CONDITION_OPERATION *popDefault);

    HRESULT (STDMETHODCALLTYPE *GetEnumTypeList)(
        IPropertyDescriptionAliasInfo *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *CoerceToCanonicalValue)(
        IPropertyDescriptionAliasInfo *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertyDescriptionAliasInfo *This,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdfFlags,
        LPWSTR *ppszDisplay);

    HRESULT (STDMETHODCALLTYPE *IsValueCanonical)(
        IPropertyDescriptionAliasInfo *This,
        REFPROPVARIANT propvar);

    /*** IPropertyDescriptionAliasInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSortByAlias)(
        IPropertyDescriptionAliasInfo *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetAdditionalSortByAliases)(
        IPropertyDescriptionAliasInfo *This,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IPropertyDescriptionAliasInfoVtbl;

interface IPropertyDescriptionAliasInfo {
    CONST_VTBL IPropertyDescriptionAliasInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyDescriptionAliasInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyDescriptionAliasInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyDescriptionAliasInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyDescription methods ***/
#define IPropertyDescriptionAliasInfo_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
#define IPropertyDescriptionAliasInfo_GetCanonicalName(This,ppszName) (This)->lpVtbl->GetCanonicalName(This,ppszName)
#define IPropertyDescriptionAliasInfo_GetPropertyType(This,pvartype) (This)->lpVtbl->GetPropertyType(This,pvartype)
#define IPropertyDescriptionAliasInfo_GetDisplayName(This,ppszName) (This)->lpVtbl->GetDisplayName(This,ppszName)
#define IPropertyDescriptionAliasInfo_GetEditInvitation(This,ppszInvite) (This)->lpVtbl->GetEditInvitation(This,ppszInvite)
#define IPropertyDescriptionAliasInfo_GetTypeFlags(This,mask,ppdtFlags) (This)->lpVtbl->GetTypeFlags(This,mask,ppdtFlags)
#define IPropertyDescriptionAliasInfo_GetViewFlags(This,ppdvFlags) (This)->lpVtbl->GetViewFlags(This,ppdvFlags)
#define IPropertyDescriptionAliasInfo_GetDefaultColumnWidth(This,pcxChars) (This)->lpVtbl->GetDefaultColumnWidth(This,pcxChars)
#define IPropertyDescriptionAliasInfo_GetDisplayType(This,pdisplaytype) (This)->lpVtbl->GetDisplayType(This,pdisplaytype)
#define IPropertyDescriptionAliasInfo_GetColumnState(This,pcsFlags) (This)->lpVtbl->GetColumnState(This,pcsFlags)
#define IPropertyDescriptionAliasInfo_GetGroupingRange(This,pgr) (This)->lpVtbl->GetGroupingRange(This,pgr)
#define IPropertyDescriptionAliasInfo_GetRelativeDescriptionType(This,prdt) (This)->lpVtbl->GetRelativeDescriptionType(This,prdt)
#define IPropertyDescriptionAliasInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) (This)->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)
#define IPropertyDescriptionAliasInfo_GetSortDescription(This,psd) (This)->lpVtbl->GetSortDescription(This,psd)
#define IPropertyDescriptionAliasInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription) (This)->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription)
#define IPropertyDescriptionAliasInfo_GetAggregationType(This,paggtype) (This)->lpVtbl->GetAggregationType(This,paggtype)
#define IPropertyDescriptionAliasInfo_GetConditionType(This,pcontype,popDefault) (This)->lpVtbl->GetConditionType(This,pcontype,popDefault)
#define IPropertyDescriptionAliasInfo_GetEnumTypeList(This,riid,ppv) (This)->lpVtbl->GetEnumTypeList(This,riid,ppv)
#define IPropertyDescriptionAliasInfo_CoerceToCanonicalValue(This,ppropvar) (This)->lpVtbl->CoerceToCanonicalValue(This,ppropvar)
#define IPropertyDescriptionAliasInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) (This)->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)
#define IPropertyDescriptionAliasInfo_IsValueCanonical(This,propvar) (This)->lpVtbl->IsValueCanonical(This,propvar)
/*** IPropertyDescriptionAliasInfo methods ***/
#define IPropertyDescriptionAliasInfo_GetSortByAlias(This,riid,ppv) (This)->lpVtbl->GetSortByAlias(This,riid,ppv)
#define IPropertyDescriptionAliasInfo_GetAdditionalSortByAliases(This,riid,ppv) (This)->lpVtbl->GetAdditionalSortByAliases(This,riid,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_QueryInterface(IPropertyDescriptionAliasInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyDescriptionAliasInfo_AddRef(IPropertyDescriptionAliasInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyDescriptionAliasInfo_Release(IPropertyDescriptionAliasInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyDescription methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetPropertyKey(IPropertyDescriptionAliasInfo* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetCanonicalName(IPropertyDescriptionAliasInfo* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetCanonicalName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetPropertyType(IPropertyDescriptionAliasInfo* This,VARTYPE *pvartype) {
    return This->lpVtbl->GetPropertyType(This,pvartype);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetDisplayName(IPropertyDescriptionAliasInfo* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetEditInvitation(IPropertyDescriptionAliasInfo* This,LPWSTR *ppszInvite) {
    return This->lpVtbl->GetEditInvitation(This,ppszInvite);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetTypeFlags(IPropertyDescriptionAliasInfo* This,PROPDESC_TYPE_FLAGS mask,PROPDESC_TYPE_FLAGS *ppdtFlags) {
    return This->lpVtbl->GetTypeFlags(This,mask,ppdtFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetViewFlags(IPropertyDescriptionAliasInfo* This,PROPDESC_VIEW_FLAGS *ppdvFlags) {
    return This->lpVtbl->GetViewFlags(This,ppdvFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetDefaultColumnWidth(IPropertyDescriptionAliasInfo* This,UINT *pcxChars) {
    return This->lpVtbl->GetDefaultColumnWidth(This,pcxChars);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetDisplayType(IPropertyDescriptionAliasInfo* This,PROPDESC_DISPLAYTYPE *pdisplaytype) {
    return This->lpVtbl->GetDisplayType(This,pdisplaytype);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetColumnState(IPropertyDescriptionAliasInfo* This,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetColumnState(This,pcsFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetGroupingRange(IPropertyDescriptionAliasInfo* This,PROPDESC_GROUPING_RANGE *pgr) {
    return This->lpVtbl->GetGroupingRange(This,pgr);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetRelativeDescriptionType(IPropertyDescriptionAliasInfo* This,PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) {
    return This->lpVtbl->GetRelativeDescriptionType(This,prdt);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetRelativeDescription(IPropertyDescriptionAliasInfo* This,REFPROPVARIANT propvar1,REFPROPVARIANT propvar2,LPWSTR *ppszDesc1,LPWSTR *ppszDesc2) {
    return This->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetSortDescription(IPropertyDescriptionAliasInfo* This,PROPDESC_SORTDESCRIPTION *psd) {
    return This->lpVtbl->GetSortDescription(This,psd);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetSortDescriptionLabel(IPropertyDescriptionAliasInfo* This,WINBOOL fDescending,LPWSTR *ppszDescription) {
    return This->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetAggregationType(IPropertyDescriptionAliasInfo* This,PROPDESC_AGGREGATION_TYPE *paggtype) {
    return This->lpVtbl->GetAggregationType(This,paggtype);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetConditionType(IPropertyDescriptionAliasInfo* This,PROPDESC_CONDITION_TYPE *pcontype,CONDITION_OPERATION *popDefault) {
    return This->lpVtbl->GetConditionType(This,pcontype,popDefault);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetEnumTypeList(IPropertyDescriptionAliasInfo* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetEnumTypeList(This,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_CoerceToCanonicalValue(IPropertyDescriptionAliasInfo* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->CoerceToCanonicalValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_FormatForDisplay(IPropertyDescriptionAliasInfo* This,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdfFlags,LPWSTR *ppszDisplay) {
    return This->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_IsValueCanonical(IPropertyDescriptionAliasInfo* This,REFPROPVARIANT propvar) {
    return This->lpVtbl->IsValueCanonical(This,propvar);
}
/*** IPropertyDescriptionAliasInfo methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetSortByAlias(IPropertyDescriptionAliasInfo* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetSortByAlias(This,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyDescriptionAliasInfo_GetAdditionalSortByAliases(IPropertyDescriptionAliasInfo* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetAdditionalSortByAliases(This,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyDescriptionSearchInfo interface
 */
#ifndef __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__
#define __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__

typedef enum PROPDESC_SEARCHINFO_FLAGS {
    PDSIF_DEFAULT = 0x0,
    PDSIF_ININVERTEDINDEX = 0x1,
    PDSIF_ISCOLUMN = 0x2,
    PDSIF_ISCOLUMNSPARSE = 0x4,
    PDSIF_ALWAYSINCLUDE = 0x8,
    PDSIF_USEFORTYPEAHEAD = 0x10
} PROPDESC_SEARCHINFO_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS)

typedef enum PROPDESC_COLUMNINDEX_TYPE {
    PDCIT_NONE = 0,
    PDCIT_ONDISK = 1,
    PDCIT_INMEMORY = 2,
    PDCIT_ONDEMAND = 3,
    PDCIT_ONDISKALL = 4,
    PDCIT_ONDISKVECTOR = 5
} PROPDESC_COLUMNINDEX_TYPE;

DEFINE_GUID(IID_IPropertyDescriptionSearchInfo, 0x078f91bd, 0x29a2, 0x440f, 0x92,0x4e, 0x46,0xa2,0x91,0x52,0x45,0x20);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("078f91bd-29a2-440f-924e-46a291524520")
IPropertyDescriptionSearchInfo : public IPropertyDescription
{
    virtual HRESULT STDMETHODCALLTYPE GetSearchInfoFlags(
        PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnIndexType(
        PROPDESC_COLUMNINDEX_TYPE *ppdciType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProjectionString(
        LPWSTR *ppszProjection) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxSize(
        UINT *pcbMaxSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyDescriptionSearchInfo, 0x078f91bd, 0x29a2, 0x440f, 0x92,0x4e, 0x46,0xa2,0x91,0x52,0x45,0x20)
#endif
#else
typedef struct IPropertyDescriptionSearchInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyDescriptionSearchInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyDescriptionSearchInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyDescriptionSearchInfo *This);

    /*** IPropertyDescription methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IPropertyDescriptionSearchInfo *This,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetCanonicalName)(
        IPropertyDescriptionSearchInfo *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetPropertyType)(
        IPropertyDescriptionSearchInfo *This,
        VARTYPE *pvartype);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IPropertyDescriptionSearchInfo *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetEditInvitation)(
        IPropertyDescriptionSearchInfo *This,
        LPWSTR *ppszInvite);

    HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_TYPE_FLAGS mask,
        PROPDESC_TYPE_FLAGS *ppdtFlags);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_VIEW_FLAGS *ppdvFlags);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumnWidth)(
        IPropertyDescriptionSearchInfo *This,
        UINT *pcxChars);

    HRESULT (STDMETHODCALLTYPE *GetDisplayType)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_DISPLAYTYPE *pdisplaytype);

    HRESULT (STDMETHODCALLTYPE *GetColumnState)(
        IPropertyDescriptionSearchInfo *This,
        SHCOLSTATEF *pcsFlags);

    HRESULT (STDMETHODCALLTYPE *GetGroupingRange)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_GROUPING_RANGE *pgr);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescriptionType)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescription)(
        IPropertyDescriptionSearchInfo *This,
        REFPROPVARIANT propvar1,
        REFPROPVARIANT propvar2,
        LPWSTR *ppszDesc1,
        LPWSTR *ppszDesc2);

    HRESULT (STDMETHODCALLTYPE *GetSortDescription)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_SORTDESCRIPTION *psd);

    HRESULT (STDMETHODCALLTYPE *GetSortDescriptionLabel)(
        IPropertyDescriptionSearchInfo *This,
        WINBOOL fDescending,
        LPWSTR *ppszDescription);

    HRESULT (STDMETHODCALLTYPE *GetAggregationType)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_AGGREGATION_TYPE *paggtype);

    HRESULT (STDMETHODCALLTYPE *GetConditionType)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_CONDITION_TYPE *pcontype,
        CONDITION_OPERATION *popDefault);

    HRESULT (STDMETHODCALLTYPE *GetEnumTypeList)(
        IPropertyDescriptionSearchInfo *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *CoerceToCanonicalValue)(
        IPropertyDescriptionSearchInfo *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertyDescriptionSearchInfo *This,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdfFlags,
        LPWSTR *ppszDisplay);

    HRESULT (STDMETHODCALLTYPE *IsValueCanonical)(
        IPropertyDescriptionSearchInfo *This,
        REFPROPVARIANT propvar);

    /*** IPropertyDescriptionSearchInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSearchInfoFlags)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags);

    HRESULT (STDMETHODCALLTYPE *GetColumnIndexType)(
        IPropertyDescriptionSearchInfo *This,
        PROPDESC_COLUMNINDEX_TYPE *ppdciType);

    HRESULT (STDMETHODCALLTYPE *GetProjectionString)(
        IPropertyDescriptionSearchInfo *This,
        LPWSTR *ppszProjection);

    HRESULT (STDMETHODCALLTYPE *GetMaxSize)(
        IPropertyDescriptionSearchInfo *This,
        UINT *pcbMaxSize);

    END_INTERFACE
} IPropertyDescriptionSearchInfoVtbl;

interface IPropertyDescriptionSearchInfo {
    CONST_VTBL IPropertyDescriptionSearchInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyDescriptionSearchInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyDescriptionSearchInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyDescriptionSearchInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyDescription methods ***/
#define IPropertyDescriptionSearchInfo_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
#define IPropertyDescriptionSearchInfo_GetCanonicalName(This,ppszName) (This)->lpVtbl->GetCanonicalName(This,ppszName)
#define IPropertyDescriptionSearchInfo_GetPropertyType(This,pvartype) (This)->lpVtbl->GetPropertyType(This,pvartype)
#define IPropertyDescriptionSearchInfo_GetDisplayName(This,ppszName) (This)->lpVtbl->GetDisplayName(This,ppszName)
#define IPropertyDescriptionSearchInfo_GetEditInvitation(This,ppszInvite) (This)->lpVtbl->GetEditInvitation(This,ppszInvite)
#define IPropertyDescriptionSearchInfo_GetTypeFlags(This,mask,ppdtFlags) (This)->lpVtbl->GetTypeFlags(This,mask,ppdtFlags)
#define IPropertyDescriptionSearchInfo_GetViewFlags(This,ppdvFlags) (This)->lpVtbl->GetViewFlags(This,ppdvFlags)
#define IPropertyDescriptionSearchInfo_GetDefaultColumnWidth(This,pcxChars) (This)->lpVtbl->GetDefaultColumnWidth(This,pcxChars)
#define IPropertyDescriptionSearchInfo_GetDisplayType(This,pdisplaytype) (This)->lpVtbl->GetDisplayType(This,pdisplaytype)
#define IPropertyDescriptionSearchInfo_GetColumnState(This,pcsFlags) (This)->lpVtbl->GetColumnState(This,pcsFlags)
#define IPropertyDescriptionSearchInfo_GetGroupingRange(This,pgr) (This)->lpVtbl->GetGroupingRange(This,pgr)
#define IPropertyDescriptionSearchInfo_GetRelativeDescriptionType(This,prdt) (This)->lpVtbl->GetRelativeDescriptionType(This,prdt)
#define IPropertyDescriptionSearchInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) (This)->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)
#define IPropertyDescriptionSearchInfo_GetSortDescription(This,psd) (This)->lpVtbl->GetSortDescription(This,psd)
#define IPropertyDescriptionSearchInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription) (This)->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription)
#define IPropertyDescriptionSearchInfo_GetAggregationType(This,paggtype) (This)->lpVtbl->GetAggregationType(This,paggtype)
#define IPropertyDescriptionSearchInfo_GetConditionType(This,pcontype,popDefault) (This)->lpVtbl->GetConditionType(This,pcontype,popDefault)
#define IPropertyDescriptionSearchInfo_GetEnumTypeList(This,riid,ppv) (This)->lpVtbl->GetEnumTypeList(This,riid,ppv)
#define IPropertyDescriptionSearchInfo_CoerceToCanonicalValue(This,ppropvar) (This)->lpVtbl->CoerceToCanonicalValue(This,ppropvar)
#define IPropertyDescriptionSearchInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) (This)->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)
#define IPropertyDescriptionSearchInfo_IsValueCanonical(This,propvar) (This)->lpVtbl->IsValueCanonical(This,propvar)
/*** IPropertyDescriptionSearchInfo methods ***/
#define IPropertyDescriptionSearchInfo_GetSearchInfoFlags(This,ppdsiFlags) (This)->lpVtbl->GetSearchInfoFlags(This,ppdsiFlags)
#define IPropertyDescriptionSearchInfo_GetColumnIndexType(This,ppdciType) (This)->lpVtbl->GetColumnIndexType(This,ppdciType)
#define IPropertyDescriptionSearchInfo_GetProjectionString(This,ppszProjection) (This)->lpVtbl->GetProjectionString(This,ppszProjection)
#define IPropertyDescriptionSearchInfo_GetMaxSize(This,pcbMaxSize) (This)->lpVtbl->GetMaxSize(This,pcbMaxSize)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_QueryInterface(IPropertyDescriptionSearchInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyDescriptionSearchInfo_AddRef(IPropertyDescriptionSearchInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyDescriptionSearchInfo_Release(IPropertyDescriptionSearchInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyDescription methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetPropertyKey(IPropertyDescriptionSearchInfo* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetCanonicalName(IPropertyDescriptionSearchInfo* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetCanonicalName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetPropertyType(IPropertyDescriptionSearchInfo* This,VARTYPE *pvartype) {
    return This->lpVtbl->GetPropertyType(This,pvartype);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetDisplayName(IPropertyDescriptionSearchInfo* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetEditInvitation(IPropertyDescriptionSearchInfo* This,LPWSTR *ppszInvite) {
    return This->lpVtbl->GetEditInvitation(This,ppszInvite);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetTypeFlags(IPropertyDescriptionSearchInfo* This,PROPDESC_TYPE_FLAGS mask,PROPDESC_TYPE_FLAGS *ppdtFlags) {
    return This->lpVtbl->GetTypeFlags(This,mask,ppdtFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetViewFlags(IPropertyDescriptionSearchInfo* This,PROPDESC_VIEW_FLAGS *ppdvFlags) {
    return This->lpVtbl->GetViewFlags(This,ppdvFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetDefaultColumnWidth(IPropertyDescriptionSearchInfo* This,UINT *pcxChars) {
    return This->lpVtbl->GetDefaultColumnWidth(This,pcxChars);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetDisplayType(IPropertyDescriptionSearchInfo* This,PROPDESC_DISPLAYTYPE *pdisplaytype) {
    return This->lpVtbl->GetDisplayType(This,pdisplaytype);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetColumnState(IPropertyDescriptionSearchInfo* This,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetColumnState(This,pcsFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetGroupingRange(IPropertyDescriptionSearchInfo* This,PROPDESC_GROUPING_RANGE *pgr) {
    return This->lpVtbl->GetGroupingRange(This,pgr);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetRelativeDescriptionType(IPropertyDescriptionSearchInfo* This,PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) {
    return This->lpVtbl->GetRelativeDescriptionType(This,prdt);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetRelativeDescription(IPropertyDescriptionSearchInfo* This,REFPROPVARIANT propvar1,REFPROPVARIANT propvar2,LPWSTR *ppszDesc1,LPWSTR *ppszDesc2) {
    return This->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetSortDescription(IPropertyDescriptionSearchInfo* This,PROPDESC_SORTDESCRIPTION *psd) {
    return This->lpVtbl->GetSortDescription(This,psd);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetSortDescriptionLabel(IPropertyDescriptionSearchInfo* This,WINBOOL fDescending,LPWSTR *ppszDescription) {
    return This->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetAggregationType(IPropertyDescriptionSearchInfo* This,PROPDESC_AGGREGATION_TYPE *paggtype) {
    return This->lpVtbl->GetAggregationType(This,paggtype);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetConditionType(IPropertyDescriptionSearchInfo* This,PROPDESC_CONDITION_TYPE *pcontype,CONDITION_OPERATION *popDefault) {
    return This->lpVtbl->GetConditionType(This,pcontype,popDefault);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetEnumTypeList(IPropertyDescriptionSearchInfo* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetEnumTypeList(This,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_CoerceToCanonicalValue(IPropertyDescriptionSearchInfo* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->CoerceToCanonicalValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_FormatForDisplay(IPropertyDescriptionSearchInfo* This,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdfFlags,LPWSTR *ppszDisplay) {
    return This->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_IsValueCanonical(IPropertyDescriptionSearchInfo* This,REFPROPVARIANT propvar) {
    return This->lpVtbl->IsValueCanonical(This,propvar);
}
/*** IPropertyDescriptionSearchInfo methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetSearchInfoFlags(IPropertyDescriptionSearchInfo* This,PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags) {
    return This->lpVtbl->GetSearchInfoFlags(This,ppdsiFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetColumnIndexType(IPropertyDescriptionSearchInfo* This,PROPDESC_COLUMNINDEX_TYPE *ppdciType) {
    return This->lpVtbl->GetColumnIndexType(This,ppdciType);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetProjectionString(IPropertyDescriptionSearchInfo* This,LPWSTR *ppszProjection) {
    return This->lpVtbl->GetProjectionString(This,ppszProjection);
}
static FORCEINLINE HRESULT IPropertyDescriptionSearchInfo_GetMaxSize(IPropertyDescriptionSearchInfo* This,UINT *pcbMaxSize) {
    return This->lpVtbl->GetMaxSize(This,pcbMaxSize);
}
#endif
#endif

#endif


#endif  /* __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyDescriptionRelatedPropertyInfo interface
 */
#ifndef __IPropertyDescriptionRelatedPropertyInfo_INTERFACE_DEFINED__
#define __IPropertyDescriptionRelatedPropertyInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyDescriptionRelatedPropertyInfo, 0x507393f4, 0x2a3d, 0x4a60, 0xb5,0x9e, 0xd9,0xc7,0x57,0x16,0xc2,0xdd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("507393f4-2a3d-4a60-b59e-d9c75716c2dd")
IPropertyDescriptionRelatedPropertyInfo : public IPropertyDescription
{
    virtual HRESULT STDMETHODCALLTYPE GetRelatedProperty(
        LPCWSTR pszRelationshipName,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyDescriptionRelatedPropertyInfo, 0x507393f4, 0x2a3d, 0x4a60, 0xb5,0x9e, 0xd9,0xc7,0x57,0x16,0xc2,0xdd)
#endif
#else
typedef struct IPropertyDescriptionRelatedPropertyInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyDescriptionRelatedPropertyInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyDescriptionRelatedPropertyInfo *This);

    /*** IPropertyDescription methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyKey)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPERTYKEY *pkey);

    HRESULT (STDMETHODCALLTYPE *GetCanonicalName)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetPropertyType)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        VARTYPE *pvartype);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetEditInvitation)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        LPWSTR *ppszInvite);

    HRESULT (STDMETHODCALLTYPE *GetTypeFlags)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_TYPE_FLAGS mask,
        PROPDESC_TYPE_FLAGS *ppdtFlags);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_VIEW_FLAGS *ppdvFlags);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumnWidth)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        UINT *pcxChars);

    HRESULT (STDMETHODCALLTYPE *GetDisplayType)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_DISPLAYTYPE *pdisplaytype);

    HRESULT (STDMETHODCALLTYPE *GetColumnState)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        SHCOLSTATEF *pcsFlags);

    HRESULT (STDMETHODCALLTYPE *GetGroupingRange)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_GROUPING_RANGE *pgr);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescriptionType)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);

    HRESULT (STDMETHODCALLTYPE *GetRelativeDescription)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        REFPROPVARIANT propvar1,
        REFPROPVARIANT propvar2,
        LPWSTR *ppszDesc1,
        LPWSTR *ppszDesc2);

    HRESULT (STDMETHODCALLTYPE *GetSortDescription)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_SORTDESCRIPTION *psd);

    HRESULT (STDMETHODCALLTYPE *GetSortDescriptionLabel)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        WINBOOL fDescending,
        LPWSTR *ppszDescription);

    HRESULT (STDMETHODCALLTYPE *GetAggregationType)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_AGGREGATION_TYPE *paggtype);

    HRESULT (STDMETHODCALLTYPE *GetConditionType)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPDESC_CONDITION_TYPE *pcontype,
        CONDITION_OPERATION *popDefault);

    HRESULT (STDMETHODCALLTYPE *GetEnumTypeList)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *CoerceToCanonicalValue)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdfFlags,
        LPWSTR *ppszDisplay);

    HRESULT (STDMETHODCALLTYPE *IsValueCanonical)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        REFPROPVARIANT propvar);

    /*** IPropertyDescriptionRelatedPropertyInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRelatedProperty)(
        IPropertyDescriptionRelatedPropertyInfo *This,
        LPCWSTR pszRelationshipName,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IPropertyDescriptionRelatedPropertyInfoVtbl;

interface IPropertyDescriptionRelatedPropertyInfo {
    CONST_VTBL IPropertyDescriptionRelatedPropertyInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyDescriptionRelatedPropertyInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyDescriptionRelatedPropertyInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyDescriptionRelatedPropertyInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyDescription methods ***/
#define IPropertyDescriptionRelatedPropertyInfo_GetPropertyKey(This,pkey) (This)->lpVtbl->GetPropertyKey(This,pkey)
#define IPropertyDescriptionRelatedPropertyInfo_GetCanonicalName(This,ppszName) (This)->lpVtbl->GetCanonicalName(This,ppszName)
#define IPropertyDescriptionRelatedPropertyInfo_GetPropertyType(This,pvartype) (This)->lpVtbl->GetPropertyType(This,pvartype)
#define IPropertyDescriptionRelatedPropertyInfo_GetDisplayName(This,ppszName) (This)->lpVtbl->GetDisplayName(This,ppszName)
#define IPropertyDescriptionRelatedPropertyInfo_GetEditInvitation(This,ppszInvite) (This)->lpVtbl->GetEditInvitation(This,ppszInvite)
#define IPropertyDescriptionRelatedPropertyInfo_GetTypeFlags(This,mask,ppdtFlags) (This)->lpVtbl->GetTypeFlags(This,mask,ppdtFlags)
#define IPropertyDescriptionRelatedPropertyInfo_GetViewFlags(This,ppdvFlags) (This)->lpVtbl->GetViewFlags(This,ppdvFlags)
#define IPropertyDescriptionRelatedPropertyInfo_GetDefaultColumnWidth(This,pcxChars) (This)->lpVtbl->GetDefaultColumnWidth(This,pcxChars)
#define IPropertyDescriptionRelatedPropertyInfo_GetDisplayType(This,pdisplaytype) (This)->lpVtbl->GetDisplayType(This,pdisplaytype)
#define IPropertyDescriptionRelatedPropertyInfo_GetColumnState(This,pcsFlags) (This)->lpVtbl->GetColumnState(This,pcsFlags)
#define IPropertyDescriptionRelatedPropertyInfo_GetGroupingRange(This,pgr) (This)->lpVtbl->GetGroupingRange(This,pgr)
#define IPropertyDescriptionRelatedPropertyInfo_GetRelativeDescriptionType(This,prdt) (This)->lpVtbl->GetRelativeDescriptionType(This,prdt)
#define IPropertyDescriptionRelatedPropertyInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) (This)->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)
#define IPropertyDescriptionRelatedPropertyInfo_GetSortDescription(This,psd) (This)->lpVtbl->GetSortDescription(This,psd)
#define IPropertyDescriptionRelatedPropertyInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription) (This)->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription)
#define IPropertyDescriptionRelatedPropertyInfo_GetAggregationType(This,paggtype) (This)->lpVtbl->GetAggregationType(This,paggtype)
#define IPropertyDescriptionRelatedPropertyInfo_GetConditionType(This,pcontype,popDefault) (This)->lpVtbl->GetConditionType(This,pcontype,popDefault)
#define IPropertyDescriptionRelatedPropertyInfo_GetEnumTypeList(This,riid,ppv) (This)->lpVtbl->GetEnumTypeList(This,riid,ppv)
#define IPropertyDescriptionRelatedPropertyInfo_CoerceToCanonicalValue(This,ppropvar) (This)->lpVtbl->CoerceToCanonicalValue(This,ppropvar)
#define IPropertyDescriptionRelatedPropertyInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) (This)->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)
#define IPropertyDescriptionRelatedPropertyInfo_IsValueCanonical(This,propvar) (This)->lpVtbl->IsValueCanonical(This,propvar)
/*** IPropertyDescriptionRelatedPropertyInfo methods ***/
#define IPropertyDescriptionRelatedPropertyInfo_GetRelatedProperty(This,pszRelationshipName,riid,ppv) (This)->lpVtbl->GetRelatedProperty(This,pszRelationshipName,riid,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_QueryInterface(IPropertyDescriptionRelatedPropertyInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyDescriptionRelatedPropertyInfo_AddRef(IPropertyDescriptionRelatedPropertyInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyDescriptionRelatedPropertyInfo_Release(IPropertyDescriptionRelatedPropertyInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyDescription methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetPropertyKey(IPropertyDescriptionRelatedPropertyInfo* This,PROPERTYKEY *pkey) {
    return This->lpVtbl->GetPropertyKey(This,pkey);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetCanonicalName(IPropertyDescriptionRelatedPropertyInfo* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetCanonicalName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetPropertyType(IPropertyDescriptionRelatedPropertyInfo* This,VARTYPE *pvartype) {
    return This->lpVtbl->GetPropertyType(This,pvartype);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetDisplayName(IPropertyDescriptionRelatedPropertyInfo* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,ppszName);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetEditInvitation(IPropertyDescriptionRelatedPropertyInfo* This,LPWSTR *ppszInvite) {
    return This->lpVtbl->GetEditInvitation(This,ppszInvite);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetTypeFlags(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_TYPE_FLAGS mask,PROPDESC_TYPE_FLAGS *ppdtFlags) {
    return This->lpVtbl->GetTypeFlags(This,mask,ppdtFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetViewFlags(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_VIEW_FLAGS *ppdvFlags) {
    return This->lpVtbl->GetViewFlags(This,ppdvFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetDefaultColumnWidth(IPropertyDescriptionRelatedPropertyInfo* This,UINT *pcxChars) {
    return This->lpVtbl->GetDefaultColumnWidth(This,pcxChars);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetDisplayType(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_DISPLAYTYPE *pdisplaytype) {
    return This->lpVtbl->GetDisplayType(This,pdisplaytype);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetColumnState(IPropertyDescriptionRelatedPropertyInfo* This,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetColumnState(This,pcsFlags);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetGroupingRange(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_GROUPING_RANGE *pgr) {
    return This->lpVtbl->GetGroupingRange(This,pgr);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetRelativeDescriptionType(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) {
    return This->lpVtbl->GetRelativeDescriptionType(This,prdt);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetRelativeDescription(IPropertyDescriptionRelatedPropertyInfo* This,REFPROPVARIANT propvar1,REFPROPVARIANT propvar2,LPWSTR *ppszDesc1,LPWSTR *ppszDesc2) {
    return This->lpVtbl->GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetSortDescription(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_SORTDESCRIPTION *psd) {
    return This->lpVtbl->GetSortDescription(This,psd);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetSortDescriptionLabel(IPropertyDescriptionRelatedPropertyInfo* This,WINBOOL fDescending,LPWSTR *ppszDescription) {
    return This->lpVtbl->GetSortDescriptionLabel(This,fDescending,ppszDescription);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetAggregationType(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_AGGREGATION_TYPE *paggtype) {
    return This->lpVtbl->GetAggregationType(This,paggtype);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetConditionType(IPropertyDescriptionRelatedPropertyInfo* This,PROPDESC_CONDITION_TYPE *pcontype,CONDITION_OPERATION *popDefault) {
    return This->lpVtbl->GetConditionType(This,pcontype,popDefault);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetEnumTypeList(IPropertyDescriptionRelatedPropertyInfo* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetEnumTypeList(This,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_CoerceToCanonicalValue(IPropertyDescriptionRelatedPropertyInfo* This,PROPVARIANT *ppropvar) {
    return This->lpVtbl->CoerceToCanonicalValue(This,ppropvar);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_FormatForDisplay(IPropertyDescriptionRelatedPropertyInfo* This,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdfFlags,LPWSTR *ppszDisplay) {
    return This->lpVtbl->FormatForDisplay(This,propvar,pdfFlags,ppszDisplay);
}
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_IsValueCanonical(IPropertyDescriptionRelatedPropertyInfo* This,REFPROPVARIANT propvar) {
    return This->lpVtbl->IsValueCanonical(This,propvar);
}
/*** IPropertyDescriptionRelatedPropertyInfo methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionRelatedPropertyInfo_GetRelatedProperty(IPropertyDescriptionRelatedPropertyInfo* This,LPCWSTR pszRelationshipName,REFIID riid,void **ppv) {
    return This->lpVtbl->GetRelatedProperty(This,pszRelationshipName,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IPropertyDescriptionRelatedPropertyInfo_INTERFACE_DEFINED__ */


typedef enum PROPDESC_ENUMFILTER {
    PDEF_ALL = 0,
    PDEF_SYSTEM = 1,
    PDEF_NONSYSTEM = 2,
    PDEF_VIEWABLE = 3,
    PDEF_QUERYABLE = 4,
    PDEF_INFULLTEXTQUERY = 5,
    PDEF_COLUMN = 6
} PROPDESC_ENUMFILTER;

/*****************************************************************************
 * IPropertySystem interface
 */
#ifndef __IPropertySystem_INTERFACE_DEFINED__
#define __IPropertySystem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertySystem, 0xca724e8a, 0xc3e6, 0x442b, 0x88,0xa4, 0x6f,0xb0,0xdb,0x80,0x35,0xa3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ca724e8a-c3e6-442b-88a4-6fb0db8035a3")
IPropertySystem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescription(
        REFPROPERTYKEY propkey,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionByName(
        LPCWSTR pszCanonicalName,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionListFromString(
        LPCWSTR pszPropList,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumeratePropertyDescriptions(
        PROPDESC_ENUMFILTER filterOn,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE FormatForDisplay(
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdff,
        LPWSTR pszText,
        DWORD cchText) = 0;

    virtual HRESULT STDMETHODCALLTYPE FormatForDisplayAlloc(
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdff,
        LPWSTR *ppszDisplay) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterPropertySchema(
        LPCWSTR pszPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterPropertySchema(
        LPCWSTR pszPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE RefreshPropertySchema(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertySystem, 0xca724e8a, 0xc3e6, 0x442b, 0x88,0xa4, 0x6f,0xb0,0xdb,0x80,0x35,0xa3)
#endif
#else
typedef struct IPropertySystemVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertySystem *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertySystem *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertySystem *This);

    /*** IPropertySystem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyDescription)(
        IPropertySystem *This,
        REFPROPERTYKEY propkey,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionByName)(
        IPropertySystem *This,
        LPCWSTR pszCanonicalName,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionListFromString)(
        IPropertySystem *This,
        LPCWSTR pszPropList,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *EnumeratePropertyDescriptions)(
        IPropertySystem *This,
        PROPDESC_ENUMFILTER filterOn,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertySystem *This,
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdff,
        LPWSTR pszText,
        DWORD cchText);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplayAlloc)(
        IPropertySystem *This,
        REFPROPERTYKEY key,
        REFPROPVARIANT propvar,
        PROPDESC_FORMAT_FLAGS pdff,
        LPWSTR *ppszDisplay);

    HRESULT (STDMETHODCALLTYPE *RegisterPropertySchema)(
        IPropertySystem *This,
        LPCWSTR pszPath);

    HRESULT (STDMETHODCALLTYPE *UnregisterPropertySchema)(
        IPropertySystem *This,
        LPCWSTR pszPath);

    HRESULT (STDMETHODCALLTYPE *RefreshPropertySchema)(
        IPropertySystem *This);

    END_INTERFACE
} IPropertySystemVtbl;

interface IPropertySystem {
    CONST_VTBL IPropertySystemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertySystem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertySystem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertySystem_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertySystem methods ***/
#define IPropertySystem_GetPropertyDescription(This,propkey,riid,ppv) (This)->lpVtbl->GetPropertyDescription(This,propkey,riid,ppv)
#define IPropertySystem_GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv)
#define IPropertySystem_GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv)
#define IPropertySystem_EnumeratePropertyDescriptions(This,filterOn,riid,ppv) (This)->lpVtbl->EnumeratePropertyDescriptions(This,filterOn,riid,ppv)
#define IPropertySystem_FormatForDisplay(This,key,propvar,pdff,pszText,cchText) (This)->lpVtbl->FormatForDisplay(This,key,propvar,pdff,pszText,cchText)
#define IPropertySystem_FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay) (This)->lpVtbl->FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay)
#define IPropertySystem_RegisterPropertySchema(This,pszPath) (This)->lpVtbl->RegisterPropertySchema(This,pszPath)
#define IPropertySystem_UnregisterPropertySchema(This,pszPath) (This)->lpVtbl->UnregisterPropertySchema(This,pszPath)
#define IPropertySystem_RefreshPropertySchema(This) (This)->lpVtbl->RefreshPropertySchema(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertySystem_QueryInterface(IPropertySystem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertySystem_AddRef(IPropertySystem* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertySystem_Release(IPropertySystem* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertySystem methods ***/
static FORCEINLINE HRESULT IPropertySystem_GetPropertyDescription(IPropertySystem* This,REFPROPERTYKEY propkey,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescription(This,propkey,riid,ppv);
}
static FORCEINLINE HRESULT IPropertySystem_GetPropertyDescriptionByName(IPropertySystem* This,LPCWSTR pszCanonicalName,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv);
}
static FORCEINLINE HRESULT IPropertySystem_GetPropertyDescriptionListFromString(IPropertySystem* This,LPCWSTR pszPropList,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv);
}
static FORCEINLINE HRESULT IPropertySystem_EnumeratePropertyDescriptions(IPropertySystem* This,PROPDESC_ENUMFILTER filterOn,REFIID riid,void **ppv) {
    return This->lpVtbl->EnumeratePropertyDescriptions(This,filterOn,riid,ppv);
}
static FORCEINLINE HRESULT IPropertySystem_FormatForDisplay(IPropertySystem* This,REFPROPERTYKEY key,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdff,LPWSTR pszText,DWORD cchText) {
    return This->lpVtbl->FormatForDisplay(This,key,propvar,pdff,pszText,cchText);
}
static FORCEINLINE HRESULT IPropertySystem_FormatForDisplayAlloc(IPropertySystem* This,REFPROPERTYKEY key,REFPROPVARIANT propvar,PROPDESC_FORMAT_FLAGS pdff,LPWSTR *ppszDisplay) {
    return This->lpVtbl->FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay);
}
static FORCEINLINE HRESULT IPropertySystem_RegisterPropertySchema(IPropertySystem* This,LPCWSTR pszPath) {
    return This->lpVtbl->RegisterPropertySchema(This,pszPath);
}
static FORCEINLINE HRESULT IPropertySystem_UnregisterPropertySchema(IPropertySystem* This,LPCWSTR pszPath) {
    return This->lpVtbl->UnregisterPropertySchema(This,pszPath);
}
static FORCEINLINE HRESULT IPropertySystem_RefreshPropertySchema(IPropertySystem* This) {
    return This->lpVtbl->RefreshPropertySchema(This);
}
#endif
#endif

#endif


#endif  /* __IPropertySystem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyDescriptionList interface
 */
#ifndef __IPropertyDescriptionList_INTERFACE_DEFINED__
#define __IPropertyDescriptionList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyDescriptionList, 0x1f9fc1d0, 0xc39b, 0x4b26, 0x81,0x7f, 0x01,0x19,0x67,0xd3,0x44,0x0e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1f9fc1d0-c39b-4b26-817f-011967d3440e")
IPropertyDescriptionList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCount(
        UINT *pcElem) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAt(
        UINT iElem,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyDescriptionList, 0x1f9fc1d0, 0xc39b, 0x4b26, 0x81,0x7f, 0x01,0x19,0x67,0xd3,0x44,0x0e)
#endif
#else
typedef struct IPropertyDescriptionListVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyDescriptionList *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyDescriptionList *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyDescriptionList *This);

    /*** IPropertyDescriptionList methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IPropertyDescriptionList *This,
        UINT *pcElem);

    HRESULT (STDMETHODCALLTYPE *GetAt)(
        IPropertyDescriptionList *This,
        UINT iElem,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IPropertyDescriptionListVtbl;

interface IPropertyDescriptionList {
    CONST_VTBL IPropertyDescriptionListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyDescriptionList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyDescriptionList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyDescriptionList_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyDescriptionList methods ***/
#define IPropertyDescriptionList_GetCount(This,pcElem) (This)->lpVtbl->GetCount(This,pcElem)
#define IPropertyDescriptionList_GetAt(This,iElem,riid,ppv) (This)->lpVtbl->GetAt(This,iElem,riid,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionList_QueryInterface(IPropertyDescriptionList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyDescriptionList_AddRef(IPropertyDescriptionList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyDescriptionList_Release(IPropertyDescriptionList* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyDescriptionList methods ***/
static FORCEINLINE HRESULT IPropertyDescriptionList_GetCount(IPropertyDescriptionList* This,UINT *pcElem) {
    return This->lpVtbl->GetCount(This,pcElem);
}
static FORCEINLINE HRESULT IPropertyDescriptionList_GetAt(IPropertyDescriptionList* This,UINT iElem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetAt(This,iElem,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IPropertyDescriptionList_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertyStoreFactory interface
 */
#ifndef __IPropertyStoreFactory_INTERFACE_DEFINED__
#define __IPropertyStoreFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyStoreFactory, 0xbc110b6d, 0x57e8, 0x4148, 0xa9,0xc6, 0x91,0x01,0x5a,0xb2,0xf3,0xa5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bc110b6d-57e8-4148-a9c6-91015ab2f3a5")
IPropertyStoreFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(
        GETPROPERTYSTOREFLAGS flags,
        IUnknown *pUnkFactory,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreForKeys(
        const PROPERTYKEY *rgKeys,
        UINT cKeys,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyStoreFactory, 0xbc110b6d, 0x57e8, 0x4148, 0xa9,0xc6, 0x91,0x01,0x5a,0xb2,0xf3,0xa5)
#endif
#else
typedef struct IPropertyStoreFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertyStoreFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertyStoreFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertyStoreFactory *This);

    /*** IPropertyStoreFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(
        IPropertyStoreFactory *This,
        GETPROPERTYSTOREFLAGS flags,
        IUnknown *pUnkFactory,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreForKeys)(
        IPropertyStoreFactory *This,
        const PROPERTYKEY *rgKeys,
        UINT cKeys,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IPropertyStoreFactoryVtbl;

interface IPropertyStoreFactory {
    CONST_VTBL IPropertyStoreFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyStoreFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyStoreFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyStoreFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyStoreFactory methods ***/
#define IPropertyStoreFactory_GetPropertyStore(This,flags,pUnkFactory,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,pUnkFactory,riid,ppv)
#define IPropertyStoreFactory_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) (This)->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertyStoreFactory_QueryInterface(IPropertyStoreFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertyStoreFactory_AddRef(IPropertyStoreFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertyStoreFactory_Release(IPropertyStoreFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyStoreFactory methods ***/
static FORCEINLINE HRESULT IPropertyStoreFactory_GetPropertyStore(IPropertyStoreFactory* This,GETPROPERTYSTOREFLAGS flags,IUnknown *pUnkFactory,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStore(This,flags,pUnkFactory,riid,ppv);
}
static FORCEINLINE HRESULT IPropertyStoreFactory_GetPropertyStoreForKeys(IPropertyStoreFactory* This,const PROPERTYKEY *rgKeys,UINT cKeys,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IPropertyStoreFactory_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IDelayedPropertyStoreFactory interface
 */
#ifndef __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__
#define __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDelayedPropertyStoreFactory, 0x40d4577f, 0xe237, 0x4bdb, 0xbd,0x69, 0x58,0xf0,0x89,0x43,0x1b,0x6a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("40d4577f-e237-4bdb-bd69-58f089431b6a")
IDelayedPropertyStoreFactory : public IPropertyStoreFactory
{
    virtual HRESULT STDMETHODCALLTYPE GetDelayedPropertyStore(
        GETPROPERTYSTOREFLAGS flags,
        DWORD dwStoreId,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDelayedPropertyStoreFactory, 0x40d4577f, 0xe237, 0x4bdb, 0xbd,0x69, 0x58,0xf0,0x89,0x43,0x1b,0x6a)
#endif
#else
typedef struct IDelayedPropertyStoreFactoryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDelayedPropertyStoreFactory *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDelayedPropertyStoreFactory *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDelayedPropertyStoreFactory *This);

    /*** IPropertyStoreFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(
        IDelayedPropertyStoreFactory *This,
        GETPROPERTYSTOREFLAGS flags,
        IUnknown *pUnkFactory,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreForKeys)(
        IDelayedPropertyStoreFactory *This,
        const PROPERTYKEY *rgKeys,
        UINT cKeys,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv);

    /*** IDelayedPropertyStoreFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDelayedPropertyStore)(
        IDelayedPropertyStoreFactory *This,
        GETPROPERTYSTOREFLAGS flags,
        DWORD dwStoreId,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IDelayedPropertyStoreFactoryVtbl;

interface IDelayedPropertyStoreFactory {
    CONST_VTBL IDelayedPropertyStoreFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDelayedPropertyStoreFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDelayedPropertyStoreFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDelayedPropertyStoreFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyStoreFactory methods ***/
#define IDelayedPropertyStoreFactory_GetPropertyStore(This,flags,pUnkFactory,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,pUnkFactory,riid,ppv)
#define IDelayedPropertyStoreFactory_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) (This)->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)
/*** IDelayedPropertyStoreFactory methods ***/
#define IDelayedPropertyStoreFactory_GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv) (This)->lpVtbl->GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDelayedPropertyStoreFactory_QueryInterface(IDelayedPropertyStoreFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDelayedPropertyStoreFactory_AddRef(IDelayedPropertyStoreFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDelayedPropertyStoreFactory_Release(IDelayedPropertyStoreFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyStoreFactory methods ***/
static FORCEINLINE HRESULT IDelayedPropertyStoreFactory_GetPropertyStore(IDelayedPropertyStoreFactory* This,GETPROPERTYSTOREFLAGS flags,IUnknown *pUnkFactory,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStore(This,flags,pUnkFactory,riid,ppv);
}
static FORCEINLINE HRESULT IDelayedPropertyStoreFactory_GetPropertyStoreForKeys(IDelayedPropertyStoreFactory* This,const PROPERTYKEY *rgKeys,UINT cKeys,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv);
}
/*** IDelayedPropertyStoreFactory methods ***/
static FORCEINLINE HRESULT IDelayedPropertyStoreFactory_GetDelayedPropertyStore(IDelayedPropertyStoreFactory* This,GETPROPERTYSTOREFLAGS flags,DWORD dwStoreId,REFIID riid,void **ppv) {
    return This->lpVtbl->GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ */


enum _PERSIST_SPROPSTORE_FLAGS {
    FPSPS_DEFAULT = 0x0,
    FPSPS_READONLY = 0x1,
    FPSPS_TREAT_NEW_VALUES_AS_DIRTY = 0x2
};

typedef int PERSIST_SPROPSTORE_FLAGS;
typedef struct tagSERIALIZEDPROPSTORAGE SERIALIZEDPROPSTORAGE;
typedef SERIALIZEDPROPSTORAGE *PUSERIALIZEDPROPSTORAGE;
typedef const SERIALIZEDPROPSTORAGE *PCUSERIALIZEDPROPSTORAGE;

/*****************************************************************************
 * IPersistSerializedPropStorage interface
 */
#ifndef __IPersistSerializedPropStorage_INTERFACE_DEFINED__
#define __IPersistSerializedPropStorage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistSerializedPropStorage, 0xe318ad57, 0x0aa0, 0x450f, 0xac,0xa5, 0x6f,0xab,0x71,0x03,0xd9,0x17);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e318ad57-0aa0-450f-aca5-6fab7103d917")
IPersistSerializedPropStorage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        PERSIST_SPROPSTORE_FLAGS flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropertyStorage(
        PCUSERIALIZEDPROPSTORAGE psps,
        DWORD cb) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyStorage(
        SERIALIZEDPROPSTORAGE **ppsps,
        DWORD *pcb) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPersistSerializedPropStorage, 0xe318ad57, 0x0aa0, 0x450f, 0xac,0xa5, 0x6f,0xab,0x71,0x03,0xd9,0x17)
#endif
#else
typedef struct IPersistSerializedPropStorageVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPersistSerializedPropStorage *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPersistSerializedPropStorage *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPersistSerializedPropStorage *This);

    /*** IPersistSerializedPropStorage methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IPersistSerializedPropStorage *This,
        PERSIST_SPROPSTORE_FLAGS flags);

    HRESULT (STDMETHODCALLTYPE *SetPropertyStorage)(
        IPersistSerializedPropStorage *This,
        PCUSERIALIZEDPROPSTORAGE psps,
        DWORD cb);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStorage)(
        IPersistSerializedPropStorage *This,
        SERIALIZEDPROPSTORAGE **ppsps,
        DWORD *pcb);

    END_INTERFACE
} IPersistSerializedPropStorageVtbl;

interface IPersistSerializedPropStorage {
    CONST_VTBL IPersistSerializedPropStorageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPersistSerializedPropStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPersistSerializedPropStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPersistSerializedPropStorage_Release(This) (This)->lpVtbl->Release(This)
/*** IPersistSerializedPropStorage methods ***/
#define IPersistSerializedPropStorage_SetFlags(This,flags) (This)->lpVtbl->SetFlags(This,flags)
#define IPersistSerializedPropStorage_SetPropertyStorage(This,psps,cb) (This)->lpVtbl->SetPropertyStorage(This,psps,cb)
#define IPersistSerializedPropStorage_GetPropertyStorage(This,ppsps,pcb) (This)->lpVtbl->GetPropertyStorage(This,ppsps,pcb)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPersistSerializedPropStorage_QueryInterface(IPersistSerializedPropStorage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPersistSerializedPropStorage_AddRef(IPersistSerializedPropStorage* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPersistSerializedPropStorage_Release(IPersistSerializedPropStorage* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersistSerializedPropStorage methods ***/
static FORCEINLINE HRESULT IPersistSerializedPropStorage_SetFlags(IPersistSerializedPropStorage* This,PERSIST_SPROPSTORE_FLAGS flags) {
    return This->lpVtbl->SetFlags(This,flags);
}
static FORCEINLINE HRESULT IPersistSerializedPropStorage_SetPropertyStorage(IPersistSerializedPropStorage* This,PCUSERIALIZEDPROPSTORAGE psps,DWORD cb) {
    return This->lpVtbl->SetPropertyStorage(This,psps,cb);
}
static FORCEINLINE HRESULT IPersistSerializedPropStorage_GetPropertyStorage(IPersistSerializedPropStorage* This,SERIALIZEDPROPSTORAGE **ppsps,DWORD *pcb) {
    return This->lpVtbl->GetPropertyStorage(This,ppsps,pcb);
}
#endif
#endif

#endif


#endif  /* __IPersistSerializedPropStorage_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPersistSerializedPropStorage2 interface
 */
#ifndef __IPersistSerializedPropStorage2_INTERFACE_DEFINED__
#define __IPersistSerializedPropStorage2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistSerializedPropStorage2, 0x77effa68, 0x4f98, 0x4366, 0xba,0x72, 0x57,0x3b,0x3d,0x88,0x05,0x71);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("77effa68-4f98-4366-ba72-573b3d880571")
IPersistSerializedPropStorage2 : public IPersistSerializedPropStorage
{
    virtual HRESULT STDMETHODCALLTYPE GetPropertyStorageSize(
        DWORD *pcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyStorageBuffer(
        SERIALIZEDPROPSTORAGE *psps,
        DWORD cb,
        DWORD *pcbWritten) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPersistSerializedPropStorage2, 0x77effa68, 0x4f98, 0x4366, 0xba,0x72, 0x57,0x3b,0x3d,0x88,0x05,0x71)
#endif
#else
typedef struct IPersistSerializedPropStorage2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPersistSerializedPropStorage2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPersistSerializedPropStorage2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPersistSerializedPropStorage2 *This);

    /*** IPersistSerializedPropStorage methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IPersistSerializedPropStorage2 *This,
        PERSIST_SPROPSTORE_FLAGS flags);

    HRESULT (STDMETHODCALLTYPE *SetPropertyStorage)(
        IPersistSerializedPropStorage2 *This,
        PCUSERIALIZEDPROPSTORAGE psps,
        DWORD cb);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStorage)(
        IPersistSerializedPropStorage2 *This,
        SERIALIZEDPROPSTORAGE **ppsps,
        DWORD *pcb);

    /*** IPersistSerializedPropStorage2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyStorageSize)(
        IPersistSerializedPropStorage2 *This,
        DWORD *pcb);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStorageBuffer)(
        IPersistSerializedPropStorage2 *This,
        SERIALIZEDPROPSTORAGE *psps,
        DWORD cb,
        DWORD *pcbWritten);

    END_INTERFACE
} IPersistSerializedPropStorage2Vtbl;

interface IPersistSerializedPropStorage2 {
    CONST_VTBL IPersistSerializedPropStorage2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPersistSerializedPropStorage2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPersistSerializedPropStorage2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPersistSerializedPropStorage2_Release(This) (This)->lpVtbl->Release(This)
/*** IPersistSerializedPropStorage methods ***/
#define IPersistSerializedPropStorage2_SetFlags(This,flags) (This)->lpVtbl->SetFlags(This,flags)
#define IPersistSerializedPropStorage2_SetPropertyStorage(This,psps,cb) (This)->lpVtbl->SetPropertyStorage(This,psps,cb)
#define IPersistSerializedPropStorage2_GetPropertyStorage(This,ppsps,pcb) (This)->lpVtbl->GetPropertyStorage(This,ppsps,pcb)
/*** IPersistSerializedPropStorage2 methods ***/
#define IPersistSerializedPropStorage2_GetPropertyStorageSize(This,pcb) (This)->lpVtbl->GetPropertyStorageSize(This,pcb)
#define IPersistSerializedPropStorage2_GetPropertyStorageBuffer(This,psps,cb,pcbWritten) (This)->lpVtbl->GetPropertyStorageBuffer(This,psps,cb,pcbWritten)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPersistSerializedPropStorage2_QueryInterface(IPersistSerializedPropStorage2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPersistSerializedPropStorage2_AddRef(IPersistSerializedPropStorage2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPersistSerializedPropStorage2_Release(IPersistSerializedPropStorage2* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersistSerializedPropStorage methods ***/
static FORCEINLINE HRESULT IPersistSerializedPropStorage2_SetFlags(IPersistSerializedPropStorage2* This,PERSIST_SPROPSTORE_FLAGS flags) {
    return This->lpVtbl->SetFlags(This,flags);
}
static FORCEINLINE HRESULT IPersistSerializedPropStorage2_SetPropertyStorage(IPersistSerializedPropStorage2* This,PCUSERIALIZEDPROPSTORAGE psps,DWORD cb) {
    return This->lpVtbl->SetPropertyStorage(This,psps,cb);
}
static FORCEINLINE HRESULT IPersistSerializedPropStorage2_GetPropertyStorage(IPersistSerializedPropStorage2* This,SERIALIZEDPROPSTORAGE **ppsps,DWORD *pcb) {
    return This->lpVtbl->GetPropertyStorage(This,ppsps,pcb);
}
/*** IPersistSerializedPropStorage2 methods ***/
static FORCEINLINE HRESULT IPersistSerializedPropStorage2_GetPropertyStorageSize(IPersistSerializedPropStorage2* This,DWORD *pcb) {
    return This->lpVtbl->GetPropertyStorageSize(This,pcb);
}
static FORCEINLINE HRESULT IPersistSerializedPropStorage2_GetPropertyStorageBuffer(IPersistSerializedPropStorage2* This,SERIALIZEDPROPSTORAGE *psps,DWORD cb,DWORD *pcbWritten) {
    return This->lpVtbl->GetPropertyStorageBuffer(This,psps,cb,pcbWritten);
}
#endif
#endif

#endif


#endif  /* __IPersistSerializedPropStorage2_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPropertySystemChangeNotify interface
 */
#ifndef __IPropertySystemChangeNotify_INTERFACE_DEFINED__
#define __IPropertySystemChangeNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertySystemChangeNotify, 0xfa955fd9, 0x38be, 0x4879, 0xa6,0xce, 0x82,0x4c,0xf5,0x2d,0x60,0x9f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fa955fd9-38be-4879-a6ce-824cf52d609f")
IPropertySystemChangeNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SchemaRefreshed(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertySystemChangeNotify, 0xfa955fd9, 0x38be, 0x4879, 0xa6,0xce, 0x82,0x4c,0xf5,0x2d,0x60,0x9f)
#endif
#else
typedef struct IPropertySystemChangeNotifyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPropertySystemChangeNotify *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPropertySystemChangeNotify *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPropertySystemChangeNotify *This);

    /*** IPropertySystemChangeNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *SchemaRefreshed)(
        IPropertySystemChangeNotify *This);

    END_INTERFACE
} IPropertySystemChangeNotifyVtbl;

interface IPropertySystemChangeNotify {
    CONST_VTBL IPropertySystemChangeNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertySystemChangeNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertySystemChangeNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertySystemChangeNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertySystemChangeNotify methods ***/
#define IPropertySystemChangeNotify_SchemaRefreshed(This) (This)->lpVtbl->SchemaRefreshed(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPropertySystemChangeNotify_QueryInterface(IPropertySystemChangeNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPropertySystemChangeNotify_AddRef(IPropertySystemChangeNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPropertySystemChangeNotify_Release(IPropertySystemChangeNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertySystemChangeNotify methods ***/
static FORCEINLINE HRESULT IPropertySystemChangeNotify_SchemaRefreshed(IPropertySystemChangeNotify* This) {
    return This->lpVtbl->SchemaRefreshed(This);
}
#endif
#endif

#endif


#endif  /* __IPropertySystemChangeNotify_INTERFACE_DEFINED__ */


/*****************************************************************************
 * ICreateObject interface
 */
#ifndef __ICreateObject_INTERFACE_DEFINED__
#define __ICreateObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICreateObject, 0x75121952, 0xe0d0, 0x43e5, 0x93,0x80, 0x1d,0x80,0x48,0x3a,0xcf,0x72);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("75121952-e0d0-43e5-9380-1d80483acf72")
ICreateObject : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateObject(
        REFCLSID clsid,
        IUnknown *pUnkOuter,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICreateObject, 0x75121952, 0xe0d0, 0x43e5, 0x93,0x80, 0x1d,0x80,0x48,0x3a,0xcf,0x72)
#endif
#else
typedef struct ICreateObjectVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICreateObject *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICreateObject *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICreateObject *This);

    /*** ICreateObject methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateObject)(
        ICreateObject *This,
        REFCLSID clsid,
        IUnknown *pUnkOuter,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} ICreateObjectVtbl;

interface ICreateObject {
    CONST_VTBL ICreateObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICreateObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICreateObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICreateObject_Release(This) (This)->lpVtbl->Release(This)
/*** ICreateObject methods ***/
#define ICreateObject_CreateObject(This,clsid,pUnkOuter,riid,ppv) (This)->lpVtbl->CreateObject(This,clsid,pUnkOuter,riid,ppv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICreateObject_QueryInterface(ICreateObject* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICreateObject_AddRef(ICreateObject* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICreateObject_Release(ICreateObject* This) {
    return This->lpVtbl->Release(This);
}
/*** ICreateObject methods ***/
static FORCEINLINE HRESULT ICreateObject_CreateObject(ICreateObject* This,REFCLSID clsid,IUnknown *pUnkOuter,REFIID riid,void **ppv) {
    return This->lpVtbl->CreateObject(This,clsid,pUnkOuter,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __ICreateObject_INTERFACE_DEFINED__ */


#define PKEY_PIDSTR_MAX 10
#define GUIDSTRING_MAX (39)
#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)

PSSTDAPI PSCoerceToCanonicalValue(REFPROPERTYKEY key, PROPVARIANT *ppropvar);
PSSTDAPI PSCreateAdapterFromPropertyStore(IPropertyStore *pps, REFIID riid, void **ppv);
PSSTDAPI PSCreateDelayedMultiplexPropertyStore(GETPROPERTYSTOREFLAGS flags, IDelayedPropertyStoreFactory *pdpsf, const DWORD *rgStoreIds, DWORD cStores, REFIID riid, void **ppv);
PSSTDAPI PSCreateMemoryPropertyStore(REFIID riid, void **ppv);
PSSTDAPI PSCreateMultiplexPropertyStore(IUnknown **prgpunkStores, DWORD cStores, REFIID riid, void **ppv);
PSSTDAPI PSCreatePropertyChangeArray(const PROPERTYKEY *rgpropkey, const PKA_FLAGS *rgflags, const PROPVARIANT *rgpropvar, UINT cChanges, REFIID riid, void **ppv);
PSSTDAPI PSCreatePropertyStoreFromObject(IUnknown *punk, DWORD grfMode, REFIID riid, void **ppv);
PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage(IPropertySetStorage *ppss, DWORD grfMode, REFIID riid, void **ppv);
PSSTDAPI PSCreateSimplePropertyChange(PKA_FLAGS flags, REFPROPERTYKEY key, REFPROPVARIANT propvar, REFIID riid, void **ppv);
PSSTDAPI PSEnumeratePropertyDescriptions(PROPDESC_ENUMFILTER filterOn, REFIID riid, void **ppv);
PSSTDAPI PSFormatForDisplay(REFPROPERTYKEY propkey, REFPROPVARIANT propvar, PROPDESC_FORMAT_FLAGS pdfFlags, LPWSTR pwszText, DWORD cchText);
PSSTDAPI PSFormatForDisplayAlloc(REFPROPERTYKEY key, REFPROPVARIANT propvar, PROPDESC_FORMAT_FLAGS pdff, PWSTR *ppszDisplay);
PSSTDAPI PSFormatPropertyValue(IPropertyStore *pps, IPropertyDescription *ppd, PROPDESC_FORMAT_FLAGS pdff, LPWSTR *ppszDisplay);
PSSTDAPI PSGetImageReferenceForValue(REFPROPERTYKEY propkey, REFPROPVARIANT propvar, PWSTR *ppszImageRes);
PSSTDAPI PSGetItemPropertyHandler(IUnknown *punkItem, BOOL fReadWrite, REFIID riid, void **ppv);
PSSTDAPI PSGetItemPropertyHandlerWithCreateObject(IUnknown *punkItem, BOOL fReadWrite, IUnknown *punkCreateObject, REFIID riid, void **ppv);
PSSTDAPI PSGetNamedPropertyFromPropertyStorage(PCUSERIALIZEDPROPSTORAGE psps, DWORD cb, LPCWSTR pszName, PROPVARIANT *ppropvar);
PSSTDAPI PSGetNameFromPropertyKey(REFPROPERTYKEY propkey, PWSTR *ppszCanonicalName);
PSSTDAPI PSGetPropertyDescription(REFPROPERTYKEY propkey, REFIID riid, void **ppv);
PSSTDAPI PSGetPropertyDescriptionByName(LPCWSTR pszCanonicalName, REFIID riid, void **ppv);
PSSTDAPI PSGetPropertyDescriptionListFromString(LPCWSTR pszPropList, REFIID riid, void **ppv);
PSSTDAPI PSGetPropertyFromPropertyStorage(PCUSERIALIZEDPROPSTORAGE psps, DWORD cb, REFPROPERTYKEY rpkey, PROPVARIANT *ppropvar);
PSSTDAPI PSGetPropertyKeyFromName(PCWSTR pszName, PROPERTYKEY *ppropkey);
PSSTDAPI PSGetPropertySystem(REFIID riid, void **ppv);
PSSTDAPI PSGetPropertyValue(IPropertyStore *pps, IPropertyDescription *ppd, PROPVARIANT *ppropvar);
PSSTDAPI PSLookupPropertyHandlerCLSID(PCWSTR pszFilePath, CLSID *pclsid);
PSSTDAPI PSPropertyBag_Delete(IPropertyBag *propBag, LPCWSTR propName);
PSSTDAPI PSPropertyBag_ReadBOOL(IPropertyBag *propBag, LPCWSTR propName, BOOL *value);
PSSTDAPI PSPropertyBag_ReadBSTR(IPropertyBag *propBag, LPCWSTR propName, BSTR *value);
PSSTDAPI PSPropertyBag_ReadDWORD(IPropertyBag *propBag, LPCWSTR propName, DWORD *value);
PSSTDAPI PSPropertyBag_ReadGUID(IPropertyBag *propBag, LPCWSTR propName, GUID *value);
PSSTDAPI PSPropertyBag_ReadInt(IPropertyBag *propBag, LPCWSTR propName, INT *value);
PSSTDAPI PSPropertyBag_ReadLONG(IPropertyBag *propBag, LPCWSTR propName, LONG *value);
PSSTDAPI PSPropertyBag_ReadPOINTL(IPropertyBag *propBag, LPCWSTR propName, POINTL *value);
PSSTDAPI PSPropertyBag_ReadPOINTS(IPropertyBag *propBag, LPCWSTR propName, POINTS *value);
PSSTDAPI PSPropertyBag_ReadPropertyKey(IPropertyBag *propBag, LPCWSTR propName, PROPERTYKEY *value);
PSSTDAPI PSPropertyBag_ReadRECTL(IPropertyBag *propBag, LPCWSTR propName, RECTL *value);
PSSTDAPI PSPropertyBag_ReadSHORT(IPropertyBag *propBag, LPCWSTR propName, SHORT *value);
PSSTDAPI PSPropertyBag_ReadStr(IPropertyBag *propBag, LPCWSTR propName, LPWSTR value, int characterCount);
PSSTDAPI PSPropertyBag_ReadStrAlloc(IPropertyBag *propBag, LPCWSTR propName, PWSTR *value);
PSSTDAPI PSPropertyBag_ReadStream(IPropertyBag *propBag, LPCWSTR propName, IStream **value);
PSSTDAPI PSPropertyBag_ReadType(IPropertyBag *propBag, LPCWSTR propName, VARIANT *var, VARTYPE type);
PSSTDAPI PSPropertyBag_ReadULONGLONG(IPropertyBag *propBag, LPCWSTR propName, ULONGLONG *value);
PSSTDAPI PSPropertyBag_ReadUnknown(IPropertyBag *propBag, LPCWSTR propName, REFIID riid, void **ppv);
PSSTDAPI PSPropertyBag_WriteBOOL(IPropertyBag *propBag, LPCWSTR propName, BOOL value);
PSSTDAPI PSPropertyBag_WriteBSTR(IPropertyBag *propBag, LPCWSTR propName, BSTR value);
PSSTDAPI PSPropertyBag_WriteDWORD(IPropertyBag *propBag, LPCWSTR propName, DWORD value);
PSSTDAPI PSPropertyBag_WriteGUID(IPropertyBag *propBag, LPCWSTR propName, const GUID *value);
PSSTDAPI PSPropertyBag_WriteInt(IPropertyBag *propBag, LPCWSTR propName, INT value);
PSSTDAPI PSPropertyBag_WriteLONG(IPropertyBag *propBag, LPCWSTR propName, LONG value);
PSSTDAPI PSPropertyBag_WritePOINTL(IPropertyBag *propBag, LPCWSTR propName, const POINTL *value);
PSSTDAPI PSPropertyBag_WritePOINTS(IPropertyBag *propBag, LPCWSTR propName, const POINTS *value);
PSSTDAPI PSPropertyBag_WritePropertyKey(IPropertyBag *propBag, LPCWSTR propName, REFPROPERTYKEY value);
PSSTDAPI PSPropertyBag_WriteRECTL(IPropertyBag *propBag, LPCWSTR propName, const RECTL *value);
PSSTDAPI PSPropertyBag_WriteSHORT(IPropertyBag *propBag, LPCWSTR propName, SHORT value);
PSSTDAPI PSPropertyBag_WriteStr(IPropertyBag *propBag, LPCWSTR propName, LPCWSTR value);
PSSTDAPI PSPropertyBag_WriteStream(IPropertyBag *propBag, LPCWSTR propName, IStream *value);
PSSTDAPI PSPropertyBag_WriteULONGLONG(IPropertyBag *propBag, LPCWSTR propName, ULONGLONG value);
PSSTDAPI PSPropertyBag_WriteUnknown(IPropertyBag *propBag, LPCWSTR propName, IUnknown *punk);
PSSTDAPI PSPropertyKeyFromString(LPCWSTR pszString, PROPERTYKEY *pkey);
PSSTDAPI PSRefreshPropertySchema(void);
PSSTDAPI PSRegisterPropertySchema(PCWSTR pszPath);
PSSTDAPI PSSetPropertyValue(IPropertyStore *pps, IPropertyDescription *ppd, REFPROPVARIANT propvar);
PSSTDAPI PSStringFromPropertyKey(REFPROPERTYKEY pkey, LPWSTR psz, UINT cch);
PSSTDAPI PSUnregisterPropertySchema(PCWSTR pszPath);

#ifndef __PropSysObjects_LIBRARY_DEFINED__
#define __PropSysObjects_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_PropSysObjects, 0x2cda3294, 0x6c4f, 0x4020, 0xb1,0x61, 0x27,0xc5,0x30,0xc8,0x1f,0xa6);

/*****************************************************************************
 * InMemoryPropertyStore coclass
 */

DEFINE_GUID(CLSID_InMemoryPropertyStore, 0x9a02e012, 0x6303, 0x4e1e, 0xb9,0xa1, 0x63,0x0f,0x80,0x25,0x92,0xc5);

#ifdef __cplusplus
class DECLSPEC_UUID("9a02e012-6303-4e1e-b9a1-630f802592c5") InMemoryPropertyStore;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(InMemoryPropertyStore, 0x9a02e012, 0x6303, 0x4e1e, 0xb9,0xa1, 0x63,0x0f,0x80,0x25,0x92,0xc5)
#endif
#endif

/*****************************************************************************
 * PropertySystem coclass
 */

DEFINE_GUID(CLSID_PropertySystem, 0xb8967f85, 0x58ae, 0x4f46, 0x9f,0xb2, 0x5d,0x79,0x04,0x79,0x8f,0x4b);

#ifdef __cplusplus
class DECLSPEC_UUID("b8967f85-58ae-4f46-9fb2-5d7904798f4b") PropertySystem;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PropertySystem, 0xb8967f85, 0x58ae, 0x4f46, 0x9f,0xb2, 0x5d,0x79,0x04,0x79,0x8f,0x4b)
#endif
#endif

#endif /* __PropSysObjects_LIBRARY_DEFINED__ */
#endif
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __propsys_h__ */
