Headers diff for propsys.dll between 7.00.7601.17514-Windows_7.0 and 7.00.9600.17415-Windows_8.1 versions



 propsys.h (7.00.7601.17514-Windows_7.0)   propsys.h (7.00.9600.17415-Windows_8.1) 
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 7.00.0555 */ /* File created by MIDL compiler version 8.00.0603 */
/* Compiler settings for propsys.idl:
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING( ) */ /* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */ #pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/ /* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__ #ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500 #define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif #endif
/* verify that the <rpcsal.h> version is high enough to compile this file*/ /* verify that the <rpcsal.h> version is high enough to compile this file*/
skipping to change at line 209 skipping to change at line 226
#include "shtypes.h" #include "shtypes.h"
#include "StructuredQueryCondition.h" #include "StructuredQueryCondition.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
/* interface __MIDL_itf_propsys_0000_0000 */ /* interface __MIDL_itf_propsys_0000_0000 */
/* [local] */ /* [local] */
#include <winapifamily.h>
#ifndef PSSTDAPI #ifndef PSSTDAPI
#if defined(_PROPSYS_) #if defined(_PROPSYS_)
#define PSSTDAPI STDAPI #define PSSTDAPI STDAPI
#define PSSTDAPI_(type) STDAPI_(type) #define PSSTDAPI_(type) STDAPI_(type)
#else #else
#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE #define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE #define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
#endif #endif
#endif // PSSTDAPI #endif // PSSTDAPI
#if 0 #if 0
typedef PROPERTYKEY *REFPROPERTYKEY; typedef PROPERTYKEY *REFPROPERTYKEY;
#endif // 0 #endif // 0
#include <propkeydef.h> #include <propkeydef.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_s_ifspec;
#ifndef __IInitializeWithFile_INTERFACE_DEFINED__ #ifndef __IInitializeWithFile_INTERFACE_DEFINED__
#define __IInitializeWithFile_INTERFACE_DEFINED__ #define __IInitializeWithFile_INTERFACE_DEFINED__
/* interface IInitializeWithFile */ /* interface IInitializeWithFile */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
skipping to change at line 257 skipping to change at line 277
#else /* C style interface */ #else /* C style interface */
typedef struct IInitializeWithFileVtbl typedef struct IInitializeWithFileVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IInitializeWithFile * This, __RPC__in IInitializeWithFile * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IInitializeWithFile * This); __RPC__in IInitializeWithFile * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IInitializeWithFile * This); __RPC__in IInitializeWithFile * This);
HRESULT ( STDMETHODCALLTYPE *Initialize )( HRESULT ( STDMETHODCALLTYPE *Initialize )(
__RPC__in IInitializeWithFile * This, __RPC__in IInitializeWithFile * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszFilePath, /* [string][in] */ __RPC__in_string LPCWSTR pszFilePath,
skipping to change at line 314 skipping to change at line 334
EXTERN_C const IID IID_IInitializeWithStream; EXTERN_C const IID IID_IInitializeWithStream;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b824b49d-22ac-4161-ac8a-9916e8fa3f7f") MIDL_INTERFACE("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")
IInitializeWithStream : public IUnknown IInitializeWithStream : public IUnknown
{ {
public: public:
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Initialize( virtual /* [local] */ HRESULT STDMETHODCALLTYPE Initialize(
/* [annotation][in] */ /* [annotation][in] */
__in IStream *pstream, _In_ IStream *pstream,
/* [annotation][in] */ /* [annotation][in] */
__in DWORD grfMode) = 0; _In_ DWORD grfMode) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IInitializeWithStreamVtbl typedef struct IInitializeWithStreamVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IInitializeWithStream * This, __RPC__in IInitializeWithStream * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IInitializeWithStream * This); __RPC__in IInitializeWithStream * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IInitializeWithStream * This); __RPC__in IInitializeWithStream * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( /* [local] */ HRESULT ( STDMETHODCALLTYPE *Initialize )(
IInitializeWithStream * This, IInitializeWithStream * This,
/* [annotation][in] */ /* [annotation][in] */
__in IStream *pstream, _In_ IStream *pstream,
/* [annotation][in] */ /* [annotation][in] */
__in DWORD grfMode); _In_ DWORD grfMode);
END_INTERFACE END_INTERFACE
} IInitializeWithStreamVtbl; } IInitializeWithStreamVtbl;
interface IInitializeWithStream interface IInitializeWithStream
{ {
CONST_VTBL struct IInitializeWithStreamVtbl *lpVtbl; CONST_VTBL struct IInitializeWithStreamVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 384 skipping to change at line 404
/* [in] */ DWORD grfMode); /* [in] */ DWORD grfMode);
void __RPC_STUB IInitializeWithStream_RemoteInitialize_Stub( void __RPC_STUB IInitializeWithStream_RemoteInitialize_Stub(
IRpcStubBuffer *This, IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer, IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage, PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase); DWORD *_pdwStubPhase);
#endif /* __IInitializeWithStream_INTERFACE_DEFINED__ */ #endif /* __IInitializeWithStream_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0002 */
/* [local] */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0002_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0002_v0_0_s_ifspec;
#ifndef __IPropertyStore_INTERFACE_DEFINED__ #ifndef __IPropertyStore_INTERFACE_DEFINED__
#define __IPropertyStore_INTERFACE_DEFINED__ #define __IPropertyStore_INTERFACE_DEFINED__
/* interface IPropertyStore */ /* interface IPropertyStore */
/* [unique][object][helpstring][uuid] */ /* [unique][object][helpstring][uuid] */
EXTERN_C const IID IID_IPropertyStore; EXTERN_C const IID IID_IPropertyStore;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
skipping to change at line 427 skipping to change at line 458
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyStoreVtbl typedef struct IPropertyStoreVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyStore * This, __RPC__in IPropertyStore * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyStore * This); __RPC__in IPropertyStore * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyStore * This); __RPC__in IPropertyStore * This);
HRESULT ( STDMETHODCALLTYPE *GetCount )( HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IPropertyStore * This, __RPC__in IPropertyStore * This,
/* [out] */ __RPC__out DWORD *cProps); /* [out] */ __RPC__out DWORD *cProps);
skipping to change at line 502 skipping to change at line 533
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IPropertyStore_INTERFACE_DEFINED__ */ #endif /* __IPropertyStore_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0003 */ /* interface __MIDL_itf_propsys_0000_0003 */
/* [local] */ /* [local] */
typedef /* [unique] */ __RPC_unique_pointer IPropertyStore *LPPROPERTYSTORE; typedef /* [unique] */ __RPC_unique_pointer IPropertyStore *LPPROPERTYSTORE;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_s_ifspec;
#ifndef __INamedPropertyStore_INTERFACE_DEFINED__ #ifndef __INamedPropertyStore_INTERFACE_DEFINED__
#define __INamedPropertyStore_INTERFACE_DEFINED__ #define __INamedPropertyStore_INTERFACE_DEFINED__
/* interface INamedPropertyStore */ /* interface INamedPropertyStore */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
EXTERN_C const IID IID_INamedPropertyStore; EXTERN_C const IID IID_INamedPropertyStore;
skipping to change at line 546 skipping to change at line 582
#else /* C style interface */ #else /* C style interface */
typedef struct INamedPropertyStoreVtbl typedef struct INamedPropertyStoreVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in INamedPropertyStore * This, __RPC__in INamedPropertyStore * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in INamedPropertyStore * This); __RPC__in INamedPropertyStore * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in INamedPropertyStore * This); __RPC__in INamedPropertyStore * This);
HRESULT ( STDMETHODCALLTYPE *GetNamedValue )( HRESULT ( STDMETHODCALLTYPE *GetNamedValue )(
__RPC__in INamedPropertyStore * This, __RPC__in INamedPropertyStore * This,
/* [string][in] */ __RPC__in_string LPCWSTR pszName, /* [string][in] */ __RPC__in_string LPCWSTR pszName,
skipping to change at line 615 skipping to change at line 651
#endif /* C style interface */ #endif /* C style interface */
#endif /* __INamedPropertyStore_INTERFACE_DEFINED__ */ #endif /* __INamedPropertyStore_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0004 */ /* interface __MIDL_itf_propsys_0000_0004 */
/* [local] */ /* [local] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum GETPROPERTYSTOREFLAGS enum GETPROPERTYSTOREFLAGS
{ GPS_DEFAULT = 0, {
GPS_HANDLERPROPERTIESONLY = 0x1, GPS_DEFAULT = 0,
GPS_READWRITE = 0x2, GPS_HANDLERPROPERTIESONLY = 0x1,
GPS_TEMPORARY = 0x4, GPS_READWRITE = 0x2,
GPS_FASTPROPERTIESONLY = 0x8, GPS_TEMPORARY = 0x4,
GPS_OPENSLOWITEM = 0x10, GPS_FASTPROPERTIESONLY = 0x8,
GPS_DELAYCREATION = 0x20, GPS_OPENSLOWITEM = 0x10,
GPS_BESTEFFORT = 0x40, GPS_DELAYCREATION = 0x20,
GPS_NO_OPLOCK = 0x80, GPS_BESTEFFORT = 0x40,
GPS_MASK_VALID = 0xff GPS_NO_OPLOCK = 0x80,
GPS_PREFERQUERYPROPERTIES = 0x100,
GPS_EXTRINSICPROPERTIES = 0x200,
GPS_EXTRINSICPROPERTIESONLY = 0x400,
GPS_MASK_VALID = 0x7ff
} GETPROPERTYSTOREFLAGS; } GETPROPERTYSTOREFLAGS;
DEFINE_ENUM_FLAG_OPERATORS(GETPROPERTYSTOREFLAGS) DEFINE_ENUM_FLAG_OPERATORS(GETPROPERTYSTOREFLAGS)
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_s_ifspec;
#ifndef __IObjectWithPropertyKey_INTERFACE_DEFINED__ #ifndef __IObjectWithPropertyKey_INTERFACE_DEFINED__
#define __IObjectWithPropertyKey_INTERFACE_DEFINED__ #define __IObjectWithPropertyKey_INTERFACE_DEFINED__
skipping to change at line 664 skipping to change at line 704
#else /* C style interface */ #else /* C style interface */
typedef struct IObjectWithPropertyKeyVtbl typedef struct IObjectWithPropertyKeyVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IObjectWithPropertyKey * This, __RPC__in IObjectWithPropertyKey * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IObjectWithPropertyKey * This); __RPC__in IObjectWithPropertyKey * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IObjectWithPropertyKey * This); __RPC__in IObjectWithPropertyKey * This);
HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )(
__RPC__in IObjectWithPropertyKey * This, __RPC__in IObjectWithPropertyKey * This,
/* [in] */ __RPC__in REFPROPERTYKEY key); /* [in] */ __RPC__in REFPROPERTYKEY key);
skipping to change at line 716 skipping to change at line 756
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IObjectWithPropertyKey_INTERFACE_DEFINED__ */ #endif /* __IObjectWithPropertyKey_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0005 */ /* interface __MIDL_itf_propsys_0000_0005 */
/* [local] */ /* [local] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PKA_FLAGS enum PKA_FLAGS
{ PKA_SET = 0, {
PKA_APPEND = ( PKA_SET + 1 ) , PKA_SET = 0,
PKA_DELETE = ( PKA_APPEND + 1 ) PKA_APPEND = ( PKA_SET + 1 ) ,
PKA_DELETE = ( PKA_APPEND + 1 )
} PKA_FLAGS; } PKA_FLAGS;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_s_ifspec;
#ifndef __IPropertyChange_INTERFACE_DEFINED__ #ifndef __IPropertyChange_INTERFACE_DEFINED__
#define __IPropertyChange_INTERFACE_DEFINED__ #define __IPropertyChange_INTERFACE_DEFINED__
/* interface IPropertyChange */ /* interface IPropertyChange */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
skipping to change at line 754 skipping to change at line 795
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyChangeVtbl typedef struct IPropertyChangeVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyChange * This, __RPC__in IPropertyChange * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyChange * This); __RPC__in IPropertyChange * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyChange * This); __RPC__in IPropertyChange * This);
HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )(
__RPC__in IPropertyChange * This, __RPC__in IPropertyChange * This,
/* [in] */ __RPC__in REFPROPERTYKEY key); /* [in] */ __RPC__in REFPROPERTYKEY key);
skipping to change at line 859 skipping to change at line 900
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyChangeArrayVtbl typedef struct IPropertyChangeArrayVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyChangeArray * This, __RPC__in IPropertyChangeArray * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyChangeArray * This); __RPC__in IPropertyChangeArray * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyChangeArray * This); __RPC__in IPropertyChangeArray * This);
HRESULT ( STDMETHODCALLTYPE *GetCount )( HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IPropertyChangeArray * This, __RPC__in IPropertyChangeArray * This,
/* [out] */ __RPC__out UINT *pcOperations); /* [out] */ __RPC__out UINT *pcOperations);
skipping to change at line 973 skipping to change at line 1014
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyStoreCapabilitiesVtbl typedef struct IPropertyStoreCapabilitiesVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyStoreCapabilities * This, __RPC__in IPropertyStoreCapabilities * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyStoreCapabilities * This); __RPC__in IPropertyStoreCapabilities * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyStoreCapabilities * This); __RPC__in IPropertyStoreCapabilities * This);
HRESULT ( STDMETHODCALLTYPE *IsPropertyWritable )( HRESULT ( STDMETHODCALLTYPE *IsPropertyWritable )(
__RPC__in IPropertyStoreCapabilities * This, __RPC__in IPropertyStoreCapabilities * This,
/* [in] */ __RPC__in REFPROPERTYKEY key); /* [in] */ __RPC__in REFPROPERTYKEY key);
skipping to change at line 1021 skipping to change at line 1062
#endif /* __IPropertyStoreCapabilities_INTERFACE_DEFINED__ */ #endif /* __IPropertyStoreCapabilities_INTERFACE_DEFINED__ */
#ifndef __IPropertyStoreCache_INTERFACE_DEFINED__ #ifndef __IPropertyStoreCache_INTERFACE_DEFINED__
#define __IPropertyStoreCache_INTERFACE_DEFINED__ #define __IPropertyStoreCache_INTERFACE_DEFINED__
/* interface IPropertyStoreCache */ /* interface IPropertyStoreCache */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PSC_STATE enum PSC_STATE
{ PSC_NORMAL = 0, {
PSC_NOTINSOURCE = 1, PSC_NORMAL = 0,
PSC_DIRTY = 2, PSC_NOTINSOURCE = 1,
PSC_READONLY = 3 PSC_DIRTY = 2,
PSC_READONLY = 3
} PSC_STATE; } PSC_STATE;
EXTERN_C const IID IID_IPropertyStoreCache; EXTERN_C const IID IID_IPropertyStoreCache;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3017056d-9a91-4e90-937d-746c72abbf4f") MIDL_INTERFACE("3017056d-9a91-4e90-937d-746c72abbf4f")
IPropertyStoreCache : public IPropertyStore IPropertyStoreCache : public IPropertyStore
{ {
public: public:
skipping to change at line 1065 skipping to change at line 1107
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyStoreCacheVtbl typedef struct IPropertyStoreCacheVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyStoreCache * This, __RPC__in IPropertyStoreCache * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyStoreCache * This); __RPC__in IPropertyStoreCache * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyStoreCache * This); __RPC__in IPropertyStoreCache * This);
HRESULT ( STDMETHODCALLTYPE *GetCount )( HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IPropertyStoreCache * This, __RPC__in IPropertyStoreCache * This,
/* [out] */ __RPC__out DWORD *cProps); /* [out] */ __RPC__out DWORD *cProps);
skipping to change at line 1177 skipping to change at line 1219
#endif /* __IPropertyStoreCache_INTERFACE_DEFINED__ */ #endif /* __IPropertyStoreCache_INTERFACE_DEFINED__ */
#ifndef __IPropertyEnumType_INTERFACE_DEFINED__ #ifndef __IPropertyEnumType_INTERFACE_DEFINED__
#define __IPropertyEnumType_INTERFACE_DEFINED__ #define __IPropertyEnumType_INTERFACE_DEFINED__
/* interface IPropertyEnumType */ /* interface IPropertyEnumType */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPENUMTYPE enum PROPENUMTYPE
{ PET_DISCRETEVALUE = 0, {
PET_RANGEDVALUE = 1, PET_DISCRETEVALUE = 0,
PET_DEFAULTVALUE = 2, PET_RANGEDVALUE = 1,
PET_ENDRANGE = 3 PET_DEFAULTVALUE = 2,
PET_ENDRANGE = 3
} PROPENUMTYPE; } PROPENUMTYPE;
EXTERN_C const IID IID_IPropertyEnumType; EXTERN_C const IID IID_IPropertyEnumType;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("11e1fbf9-2d56-4a6b-8db3-7cd193a471f2") MIDL_INTERFACE("11e1fbf9-2d56-4a6b-8db3-7cd193a471f2")
IPropertyEnumType : public IUnknown IPropertyEnumType : public IUnknown
{ {
public: public:
skipping to change at line 1218 skipping to change at line 1261
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyEnumTypeVtbl typedef struct IPropertyEnumTypeVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyEnumType * This, __RPC__in IPropertyEnumType * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyEnumType * This); __RPC__in IPropertyEnumType * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyEnumType * This); __RPC__in IPropertyEnumType * This);
HRESULT ( STDMETHODCALLTYPE *GetEnumType )( HRESULT ( STDMETHODCALLTYPE *GetEnumType )(
__RPC__in IPropertyEnumType * This, __RPC__in IPropertyEnumType * This,
/* [out] */ __RPC__out PROPENUMTYPE *penumtype); /* [out] */ __RPC__out PROPENUMTYPE *penumtype);
skipping to change at line 1315 skipping to change at line 1358
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyEnumType2Vtbl typedef struct IPropertyEnumType2Vtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyEnumType2 * This, __RPC__in IPropertyEnumType2 * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyEnumType2 * This); __RPC__in IPropertyEnumType2 * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyEnumType2 * This); __RPC__in IPropertyEnumType2 * This);
HRESULT ( STDMETHODCALLTYPE *GetEnumType )( HRESULT ( STDMETHODCALLTYPE *GetEnumType )(
__RPC__in IPropertyEnumType2 * This, __RPC__in IPropertyEnumType2 * This,
/* [out] */ __RPC__out PROPENUMTYPE *penumtype); /* [out] */ __RPC__out PROPENUMTYPE *penumtype);
skipping to change at line 1433 skipping to change at line 1476
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyEnumTypeListVtbl typedef struct IPropertyEnumTypeListVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyEnumTypeList * This, __RPC__in IPropertyEnumTypeList * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyEnumTypeList * This); __RPC__in IPropertyEnumTypeList * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyEnumTypeList * This); __RPC__in IPropertyEnumTypeList * This);
HRESULT ( STDMETHODCALLTYPE *GetCount )( HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IPropertyEnumTypeList * This, __RPC__in IPropertyEnumTypeList * This,
/* [out] */ __RPC__out UINT *pctypes); /* [out] */ __RPC__out UINT *pctypes);
skipping to change at line 1507 skipping to change at line 1550
#endif /* __IPropertyEnumTypeList_INTERFACE_DEFINED__ */ #endif /* __IPropertyEnumTypeList_INTERFACE_DEFINED__ */
#ifndef __IPropertyDescription_INTERFACE_DEFINED__ #ifndef __IPropertyDescription_INTERFACE_DEFINED__
#define __IPropertyDescription_INTERFACE_DEFINED__ #define __IPropertyDescription_INTERFACE_DEFINED__
/* interface IPropertyDescription */ /* interface IPropertyDescription */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_TYPE_FLAGS enum PROPDESC_TYPE_FLAGS
{ PDTF_DEFAULT = 0, {
PDTF_MULTIPLEVALUES = 0x1, PDTF_DEFAULT = 0,
PDTF_ISINNATE = 0x2, PDTF_MULTIPLEVALUES = 0x1,
PDTF_ISGROUP = 0x4, PDTF_ISINNATE = 0x2,
PDTF_CANGROUPBY = 0x8, PDTF_ISGROUP = 0x4,
PDTF_CANSTACKBY = 0x10, PDTF_CANGROUPBY = 0x8,
PDTF_ISTREEPROPERTY = 0x20, PDTF_CANSTACKBY = 0x10,
PDTF_INCLUDEINFULLTEXTQUERY = 0x40, PDTF_ISTREEPROPERTY = 0x20,
PDTF_ISVIEWABLE = 0x80, PDTF_INCLUDEINFULLTEXTQUERY = 0x40,
PDTF_ISQUERYABLE = 0x100, PDTF_ISVIEWABLE = 0x80,
PDTF_CANBEPURGED = 0x200, PDTF_ISQUERYABLE = 0x100,
PDTF_SEARCHRAWVALUE = 0x400, PDTF_CANBEPURGED = 0x200,
PDTF_ISSYSTEMPROPERTY = 0x80000000, PDTF_SEARCHRAWVALUE = 0x400,
PDTF_MASK_ALL = 0x800007ff PDTF_ISSYSTEMPROPERTY = 0x80000000,
PDTF_MASK_ALL = 0x800007ff
} PROPDESC_TYPE_FLAGS; } PROPDESC_TYPE_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_TYPE_FLAGS) DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_TYPE_FLAGS)
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_VIEW_FLAGS enum PROPDESC_VIEW_FLAGS
{ PDVF_DEFAULT = 0, {
PDVF_CENTERALIGN = 0x1, PDVF_DEFAULT = 0,
PDVF_RIGHTALIGN = 0x2, PDVF_CENTERALIGN = 0x1,
PDVF_BEGINNEWGROUP = 0x4, PDVF_RIGHTALIGN = 0x2,
PDVF_FILLAREA = 0x8, PDVF_BEGINNEWGROUP = 0x4,
PDVF_SORTDESCENDING = 0x10, PDVF_FILLAREA = 0x8,
PDVF_SHOWONLYIFPRESENT = 0x20, PDVF_SORTDESCENDING = 0x10,
PDVF_SHOWBYDEFAULT = 0x40, PDVF_SHOWONLYIFPRESENT = 0x20,
PDVF_SHOWINPRIMARYLIST = 0x80, PDVF_SHOWBYDEFAULT = 0x40,
PDVF_SHOWINSECONDARYLIST = 0x100, PDVF_SHOWINPRIMARYLIST = 0x80,
PDVF_HIDELABEL = 0x200, PDVF_SHOWINSECONDARYLIST = 0x100,
PDVF_HIDDEN = 0x800, PDVF_HIDELABEL = 0x200,
PDVF_CANWRAP = 0x1000, PDVF_HIDDEN = 0x800,
PDVF_MASK_ALL = 0x1bff PDVF_CANWRAP = 0x1000,
PDVF_MASK_ALL = 0x1bff
} PROPDESC_VIEW_FLAGS; } PROPDESC_VIEW_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_VIEW_FLAGS) DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_VIEW_FLAGS)
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_DISPLAYTYPE enum PROPDESC_DISPLAYTYPE
{ PDDT_STRING = 0, {
PDDT_NUMBER = 1, PDDT_STRING = 0,
PDDT_BOOLEAN = 2, PDDT_NUMBER = 1,
PDDT_DATETIME = 3, PDDT_BOOLEAN = 2,
PDDT_ENUMERATED = 4 PDDT_DATETIME = 3,
PDDT_ENUMERATED = 4
} PROPDESC_DISPLAYTYPE; } PROPDESC_DISPLAYTYPE;
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_GROUPING_RANGE enum PROPDESC_GROUPING_RANGE
{ PDGR_DISCRETE = 0, {
PDGR_ALPHANUMERIC = 1, PDGR_DISCRETE = 0,
PDGR_SIZE = 2, PDGR_ALPHANUMERIC = 1,
PDGR_DYNAMIC = 3, PDGR_SIZE = 2,
PDGR_DATE = 4, PDGR_DYNAMIC = 3,
PDGR_PERCENT = 5, PDGR_DATE = 4,
PDGR_ENUMERATED = 6 PDGR_PERCENT = 5,
PDGR_ENUMERATED = 6
} PROPDESC_GROUPING_RANGE; } PROPDESC_GROUPING_RANGE;
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_FORMAT_FLAGS enum PROPDESC_FORMAT_FLAGS
{ PDFF_DEFAULT = 0, {
PDFF_PREFIXNAME = 0x1, PDFF_DEFAULT = 0,
PDFF_FILENAME = 0x2, PDFF_PREFIXNAME = 0x1,
PDFF_ALWAYSKB = 0x4, PDFF_FILENAME = 0x2,
PDFF_RESERVED_RIGHTTOLEFT = 0x8, PDFF_ALWAYSKB = 0x4,
PDFF_SHORTTIME = 0x10, PDFF_RESERVED_RIGHTTOLEFT = 0x8,
PDFF_LONGTIME = 0x20, PDFF_SHORTTIME = 0x10,
PDFF_HIDETIME = 0x40, PDFF_LONGTIME = 0x20,
PDFF_SHORTDATE = 0x80, PDFF_HIDETIME = 0x40,
PDFF_LONGDATE = 0x100, PDFF_SHORTDATE = 0x80,
PDFF_HIDEDATE = 0x200, PDFF_LONGDATE = 0x100,
PDFF_RELATIVEDATE = 0x400, PDFF_HIDEDATE = 0x200,
PDFF_USEEDITINVITATION = 0x800, PDFF_RELATIVEDATE = 0x400,
PDFF_READONLY = 0x1000, PDFF_USEEDITINVITATION = 0x800,
PDFF_NOAUTOREADINGORDER = 0x2000 PDFF_READONLY = 0x1000,
PDFF_NOAUTOREADINGORDER = 0x2000
} PROPDESC_FORMAT_FLAGS; } PROPDESC_FORMAT_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_FORMAT_FLAGS) DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_FORMAT_FLAGS)
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_SORTDESCRIPTION enum PROPDESC_SORTDESCRIPTION
{ PDSD_GENERAL = 0, {
PDSD_A_Z = 1, PDSD_GENERAL = 0,
PDSD_LOWEST_HIGHEST = 2, PDSD_A_Z = 1,
PDSD_SMALLEST_BIGGEST = 3, PDSD_LOWEST_HIGHEST = 2,
PDSD_OLDEST_NEWEST = 4 PDSD_SMALLEST_BIGGEST = 3,
PDSD_OLDEST_NEWEST = 4
} PROPDESC_SORTDESCRIPTION; } PROPDESC_SORTDESCRIPTION;
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_RELATIVEDESCRIPTION_TYPE enum PROPDESC_RELATIVEDESCRIPTION_TYPE
{ PDRDT_GENERAL = 0, {
PDRDT_DATE = 1, PDRDT_GENERAL = 0,
PDRDT_SIZE = 2, PDRDT_DATE = 1,
PDRDT_COUNT = 3, PDRDT_SIZE = 2,
PDRDT_REVISION = 4, PDRDT_COUNT = 3,
PDRDT_LENGTH = 5, PDRDT_REVISION = 4,
PDRDT_DURATION = 6, PDRDT_LENGTH = 5,
PDRDT_SPEED = 7, PDRDT_DURATION = 6,
PDRDT_RATE = 8, PDRDT_SPEED = 7,
PDRDT_RATING = 9, PDRDT_RATE = 8,
PDRDT_PRIORITY = 10 PDRDT_RATING = 9,
PDRDT_PRIORITY = 10
} PROPDESC_RELATIVEDESCRIPTION_TYPE; } PROPDESC_RELATIVEDESCRIPTION_TYPE;
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_AGGREGATION_TYPE enum PROPDESC_AGGREGATION_TYPE
{ PDAT_DEFAULT = 0, {
PDAT_FIRST = 1, PDAT_DEFAULT = 0,
PDAT_SUM = 2, PDAT_FIRST = 1,
PDAT_AVERAGE = 3, PDAT_SUM = 2,
PDAT_DATERANGE = 4, PDAT_AVERAGE = 3,
PDAT_UNION = 5, PDAT_DATERANGE = 4,
PDAT_MAX = 6, PDAT_UNION = 5,
PDAT_MIN = 7 PDAT_MAX = 6,
PDAT_MIN = 7
} PROPDESC_AGGREGATION_TYPE; } PROPDESC_AGGREGATION_TYPE;
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_CONDITION_TYPE enum PROPDESC_CONDITION_TYPE
{ PDCOT_NONE = 0, {
PDCOT_STRING = 1, PDCOT_NONE = 0,
PDCOT_SIZE = 2, PDCOT_STRING = 1,
PDCOT_DATETIME = 3, PDCOT_SIZE = 2,
PDCOT_BOOLEAN = 4, PDCOT_DATETIME = 3,
PDCOT_NUMBER = 5 PDCOT_BOOLEAN = 4,
PDCOT_NUMBER = 5
} PROPDESC_CONDITION_TYPE; } PROPDESC_CONDITION_TYPE;
EXTERN_C const IID IID_IPropertyDescription; EXTERN_C const IID IID_IPropertyDescription;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6f79d558-3e96-4549-a1d1-7d75d2288814") MIDL_INTERFACE("6f79d558-3e96-4549-a1d1-7d75d2288814")
IPropertyDescription : public IUnknown IPropertyDescription : public IUnknown
{ {
public: public:
skipping to change at line 1700 skipping to change at line 1752
virtual HRESULT STDMETHODCALLTYPE GetConditionType( virtual HRESULT STDMETHODCALLTYPE GetConditionType(
/* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype, /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype,
/* [out] */ __RPC__out CONDITION_OPERATION *popDefault) = 0; /* [out] */ __RPC__out CONDITION_OPERATION *popDefault) = 0;
virtual HRESULT STDMETHODCALLTYPE GetEnumTypeList( virtual HRESULT STDMETHODCALLTYPE GetEnumTypeList(
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0; /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
virtual /* [local] */ HRESULT STDMETHODCALLTYPE CoerceToCanonicalValue( virtual /* [local] */ HRESULT STDMETHODCALLTYPE CoerceToCanonicalValue(
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar) = 0; _Inout_ PROPVARIANT *ppropvar) = 0;
virtual HRESULT STDMETHODCALLTYPE FormatForDisplay( virtual HRESULT STDMETHODCALLTYPE FormatForDisplay(
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) = 0; /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) = 0;
virtual HRESULT STDMETHODCALLTYPE IsValueCanonical( virtual HRESULT STDMETHODCALLTYPE IsValueCanonical(
/* [in] */ __RPC__in REFPROPVARIANT propvar) = 0; /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0;
}; };
skipping to change at line 1722 skipping to change at line 1774
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyDescriptionVtbl typedef struct IPropertyDescriptionVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyDescription * This, __RPC__in IPropertyDescription * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyDescription * This); __RPC__in IPropertyDescription * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyDescription * This); __RPC__in IPropertyDescription * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )(
__RPC__in IPropertyDescription * This, __RPC__in IPropertyDescription * This,
/* [out] */ __RPC__out PROPERTYKEY *pkey); /* [out] */ __RPC__out PROPERTYKEY *pkey);
skipping to change at line 1812 skipping to change at line 1864
/* [out] */ __RPC__out CONDITION_OPERATION *popDefault); /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )(
__RPC__in IPropertyDescription * This, __RPC__in IPropertyDescription * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv); /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )(
IPropertyDescription * This, IPropertyDescription * This,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )(
__RPC__in IPropertyDescription * This, __RPC__in IPropertyDescription * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ; /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ;
HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )(
__RPC__in IPropertyDescription * This, __RPC__in IPropertyDescription * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar); /* [in] */ __RPC__in REFPROPVARIANT propvar);
skipping to change at line 1953 skipping to change at line 2005
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyDescription2Vtbl typedef struct IPropertyDescription2Vtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyDescription2 * This, __RPC__in IPropertyDescription2 * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyDescription2 * This); __RPC__in IPropertyDescription2 * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyDescription2 * This); __RPC__in IPropertyDescription2 * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )(
__RPC__in IPropertyDescription2 * This, __RPC__in IPropertyDescription2 * This,
/* [out] */ __RPC__out PROPERTYKEY *pkey); /* [out] */ __RPC__out PROPERTYKEY *pkey);
skipping to change at line 2043 skipping to change at line 2095
/* [out] */ __RPC__out CONDITION_OPERATION *popDefault); /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )(
__RPC__in IPropertyDescription2 * This, __RPC__in IPropertyDescription2 * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv); /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )(
IPropertyDescription2 * This, IPropertyDescription2 * This,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )(
__RPC__in IPropertyDescription2 * This, __RPC__in IPropertyDescription2 * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ; /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ;
HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )(
__RPC__in IPropertyDescription2 * This, __RPC__in IPropertyDescription2 * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar); /* [in] */ __RPC__in REFPROPVARIANT propvar);
skipping to change at line 2185 skipping to change at line 2237
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyDescriptionAliasInfoVtbl typedef struct IPropertyDescriptionAliasInfoVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyDescriptionAliasInfo * This, __RPC__in IPropertyDescriptionAliasInfo * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyDescriptionAliasInfo * This); __RPC__in IPropertyDescriptionAliasInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyDescriptionAliasInfo * This); __RPC__in IPropertyDescriptionAliasInfo * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )(
__RPC__in IPropertyDescriptionAliasInfo * This, __RPC__in IPropertyDescriptionAliasInfo * This,
/* [out] */ __RPC__out PROPERTYKEY *pkey); /* [out] */ __RPC__out PROPERTYKEY *pkey);
skipping to change at line 2275 skipping to change at line 2327
/* [out] */ __RPC__out CONDITION_OPERATION *popDefault); /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )(
__RPC__in IPropertyDescriptionAliasInfo * This, __RPC__in IPropertyDescriptionAliasInfo * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv); /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )(
IPropertyDescriptionAliasInfo * This, IPropertyDescriptionAliasInfo * This,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )(
__RPC__in IPropertyDescriptionAliasInfo * This, __RPC__in IPropertyDescriptionAliasInfo * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ; /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ;
HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )(
__RPC__in IPropertyDescriptionAliasInfo * This, __RPC__in IPropertyDescriptionAliasInfo * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar); /* [in] */ __RPC__in REFPROPVARIANT propvar);
skipping to change at line 2399 skipping to change at line 2451
#endif /* __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ */ #endif /* __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ */
#ifndef __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ #ifndef __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__
#define __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ #define __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__
/* interface IPropertyDescriptionSearchInfo */ /* interface IPropertyDescriptionSearchInfo */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_SEARCHINFO_FLAGS enum PROPDESC_SEARCHINFO_FLAGS
{ PDSIF_DEFAULT = 0, {
PDSIF_ININVERTEDINDEX = 0x1, PDSIF_DEFAULT = 0,
PDSIF_ISCOLUMN = 0x2, PDSIF_ININVERTEDINDEX = 0x1,
PDSIF_ISCOLUMNSPARSE = 0x4, PDSIF_ISCOLUMN = 0x2,
PDSIF_ALWAYSINCLUDE = 0x8 PDSIF_ISCOLUMNSPARSE = 0x4,
PDSIF_ALWAYSINCLUDE = 0x8,
PDSIF_USEFORTYPEAHEAD = 0x10
} PROPDESC_SEARCHINFO_FLAGS; } PROPDESC_SEARCHINFO_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS) DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS)
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_COLUMNINDEX_TYPE enum PROPDESC_COLUMNINDEX_TYPE
{ PDCIT_NONE = 0, {
PDCIT_ONDISK = 1, PDCIT_NONE = 0,
PDCIT_INMEMORY = 2, PDCIT_ONDISK = 1,
PDCIT_ONDEMAND = 3, PDCIT_INMEMORY = 2,
PDCIT_ONDISKALL = 4, PDCIT_ONDEMAND = 3,
PDCIT_ONDISKVECTOR = 5 PDCIT_ONDISKALL = 4,
PDCIT_ONDISKVECTOR = 5
} PROPDESC_COLUMNINDEX_TYPE; } PROPDESC_COLUMNINDEX_TYPE;
EXTERN_C const IID IID_IPropertyDescriptionSearchInfo; EXTERN_C const IID IID_IPropertyDescriptionSearchInfo;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("078f91bd-29a2-440f-924e-46a291524520") MIDL_INTERFACE("078f91bd-29a2-440f-924e-46a291524520")
IPropertyDescriptionSearchInfo : public IPropertyDescription IPropertyDescriptionSearchInfo : public IPropertyDescription
{ {
public: public:
skipping to change at line 2449 skipping to change at line 2504
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyDescriptionSearchInfoVtbl typedef struct IPropertyDescriptionSearchInfoVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyDescriptionSearchInfo * This, __RPC__in IPropertyDescriptionSearchInfo * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyDescriptionSearchInfo * This); __RPC__in IPropertyDescriptionSearchInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyDescriptionSearchInfo * This); __RPC__in IPropertyDescriptionSearchInfo * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )(
__RPC__in IPropertyDescriptionSearchInfo * This, __RPC__in IPropertyDescriptionSearchInfo * This,
/* [out] */ __RPC__out PROPERTYKEY *pkey); /* [out] */ __RPC__out PROPERTYKEY *pkey);
skipping to change at line 2539 skipping to change at line 2594
/* [out] */ __RPC__out CONDITION_OPERATION *popDefault); /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )(
__RPC__in IPropertyDescriptionSearchInfo * This, __RPC__in IPropertyDescriptionSearchInfo * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv); /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )(
IPropertyDescriptionSearchInfo * This, IPropertyDescriptionSearchInfo * This,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )(
__RPC__in IPropertyDescriptionSearchInfo * This, __RPC__in IPropertyDescriptionSearchInfo * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ; /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ;
HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )(
__RPC__in IPropertyDescriptionSearchInfo * This, __RPC__in IPropertyDescriptionSearchInfo * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar); /* [in] */ __RPC__in REFPROPVARIANT propvar);
skipping to change at line 2698 skipping to change at line 2753
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyDescriptionRelatedPropertyInfoVtbl typedef struct IPropertyDescriptionRelatedPropertyInfoVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This, __RPC__in IPropertyDescriptionRelatedPropertyInfo * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This); __RPC__in IPropertyDescriptionRelatedPropertyInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This); __RPC__in IPropertyDescriptionRelatedPropertyInfo * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This, __RPC__in IPropertyDescriptionRelatedPropertyInfo * This,
/* [out] */ __RPC__out PROPERTYKEY *pkey); /* [out] */ __RPC__out PROPERTYKEY *pkey);
skipping to change at line 2788 skipping to change at line 2843
/* [out] */ __RPC__out CONDITION_OPERATION *popDefault); /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This, __RPC__in IPropertyDescriptionRelatedPropertyInfo * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [iid_is][out] */ __RPC__deref_out_opt void **ppv); /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )(
IPropertyDescriptionRelatedPropertyInfo * This, IPropertyDescriptionRelatedPropertyInfo * This,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This, __RPC__in IPropertyDescriptionRelatedPropertyInfo * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags, /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
/* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ; /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) ;
HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )(
__RPC__in IPropertyDescriptionRelatedPropertyInfo * This, __RPC__in IPropertyDescriptionRelatedPropertyInfo * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar); /* [in] */ __RPC__in REFPROPVARIANT propvar);
skipping to change at line 2902 skipping to change at line 2957
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IPropertyDescriptionRelatedPropertyInfo_INTERFACE_DEFINED__ */ #endif /* __IPropertyDescriptionRelatedPropertyInfo_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0017 */ /* interface __MIDL_itf_propsys_0000_0017 */
/* [local] */ /* [local] */
typedef /* [v1_enum] */ typedef /* [v1_enum] */
enum PROPDESC_ENUMFILTER enum PROPDESC_ENUMFILTER
{ PDEF_ALL = 0, {
PDEF_SYSTEM = 1, PDEF_ALL = 0,
PDEF_NONSYSTEM = 2, PDEF_SYSTEM = 1,
PDEF_VIEWABLE = 3, PDEF_NONSYSTEM = 2,
PDEF_QUERYABLE = 4, PDEF_VIEWABLE = 3,
PDEF_INFULLTEXTQUERY = 5, PDEF_QUERYABLE = 4,
PDEF_COLUMN = 6 PDEF_INFULLTEXTQUERY = 5,
PDEF_COLUMN = 6
} PROPDESC_ENUMFILTER; } PROPDESC_ENUMFILTER;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0017_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0017_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0017_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0017_v0_0_s_ifspec;
#ifndef __IPropertySystem_INTERFACE_DEFINED__ #ifndef __IPropertySystem_INTERFACE_DEFINED__
#define __IPropertySystem_INTERFACE_DEFINED__ #define __IPropertySystem_INTERFACE_DEFINED__
/* interface IPropertySystem */ /* interface IPropertySystem */
/* [unique][object][uuid] */ /* [unique][object][uuid] */
skipping to change at line 2981 skipping to change at line 3037
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertySystemVtbl typedef struct IPropertySystemVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertySystem * This, __RPC__in IPropertySystem * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertySystem * This); __RPC__in IPropertySystem * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertySystem * This); __RPC__in IPropertySystem * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyDescription )( HRESULT ( STDMETHODCALLTYPE *GetPropertyDescription )(
__RPC__in IPropertySystem * This, __RPC__in IPropertySystem * This,
/* [in] */ __RPC__in REFPROPERTYKEY propkey, /* [in] */ __RPC__in REFPROPERTYKEY propkey,
skipping to change at line 3125 skipping to change at line 3181
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyDescriptionListVtbl typedef struct IPropertyDescriptionListVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyDescriptionList * This, __RPC__in IPropertyDescriptionList * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyDescriptionList * This); __RPC__in IPropertyDescriptionList * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyDescriptionList * This); __RPC__in IPropertyDescriptionList * This);
HRESULT ( STDMETHODCALLTYPE *GetCount )( HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in IPropertyDescriptionList * This, __RPC__in IPropertyDescriptionList * This,
/* [out] */ __RPC__out UINT *pcElem); /* [out] */ __RPC__out UINT *pcElem);
skipping to change at line 3213 skipping to change at line 3269
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertyStoreFactoryVtbl typedef struct IPropertyStoreFactoryVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertyStoreFactory * This, __RPC__in IPropertyStoreFactory * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertyStoreFactory * This); __RPC__in IPropertyStoreFactory * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertyStoreFactory * This); __RPC__in IPropertyStoreFactory * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )( HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )(
__RPC__in IPropertyStoreFactory * This, __RPC__in IPropertyStoreFactory * This,
/* [in] */ GETPROPERTYSTOREFLAGS flags, /* [in] */ GETPROPERTYSTOREFLAGS flags,
skipping to change at line 3299 skipping to change at line 3355
#else /* C style interface */ #else /* C style interface */
typedef struct IDelayedPropertyStoreFactoryVtbl typedef struct IDelayedPropertyStoreFactoryVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IDelayedPropertyStoreFactory * This, __RPC__in IDelayedPropertyStoreFactory * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IDelayedPropertyStoreFactory * This); __RPC__in IDelayedPropertyStoreFactory * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IDelayedPropertyStoreFactory * This); __RPC__in IDelayedPropertyStoreFactory * This);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )( HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )(
__RPC__in IDelayedPropertyStoreFactory * This, __RPC__in IDelayedPropertyStoreFactory * This,
/* [in] */ GETPROPERTYSTOREFLAGS flags, /* [in] */ GETPROPERTYSTOREFLAGS flags,
skipping to change at line 3368 skipping to change at line 3424
#endif /* C style interface */ #endif /* C style interface */
#endif /* __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ */ #endif /* __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0021 */ /* interface __MIDL_itf_propsys_0000_0021 */
/* [local] */ /* [local] */
/* [v1_enum] */ /* [v1_enum] */
enum _PERSIST_SPROPSTORE_FLAGS enum _PERSIST_SPROPSTORE_FLAGS
{ FPSPS_DEFAULT = 0, {
FPSPS_READONLY = 0x1 FPSPS_DEFAULT = 0,
FPSPS_READONLY = 0x1,
FPSPS_TREAT_NEW_VALUES_AS_DIRTY = 0x2
} ; } ;
typedef int PERSIST_SPROPSTORE_FLAGS; typedef int PERSIST_SPROPSTORE_FLAGS;
typedef struct tagSERIALIZEDPROPSTORAGE SERIALIZEDPROPSTORAGE; typedef struct tagSERIALIZEDPROPSTORAGE SERIALIZEDPROPSTORAGE;
typedef SERIALIZEDPROPSTORAGE __unaligned *PUSERIALIZEDPROPSTORAGE; typedef SERIALIZEDPROPSTORAGE __unaligned *PUSERIALIZEDPROPSTORAGE;
typedef const SERIALIZEDPROPSTORAGE __unaligned *PCUSERIALIZEDPROPSTORAGE; typedef const SERIALIZEDPROPSTORAGE __unaligned *PCUSERIALIZEDPROPSTORAGE;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0021_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0021_v0_0_c_ifspec;
skipping to change at line 3401 skipping to change at line 3459
MIDL_INTERFACE("e318ad57-0aa0-450f-aca5-6fab7103d917") MIDL_INTERFACE("e318ad57-0aa0-450f-aca5-6fab7103d917")
IPersistSerializedPropStorage : public IUnknown IPersistSerializedPropStorage : public IUnknown
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE SetFlags( virtual HRESULT STDMETHODCALLTYPE SetFlags(
/* [in] */ PERSIST_SPROPSTORE_FLAGS flags) = 0; /* [in] */ PERSIST_SPROPSTORE_FLAGS flags) = 0;
virtual HRESULT STDMETHODCALLTYPE SetPropertyStorage( virtual HRESULT STDMETHODCALLTYPE SetPropertyStorage(
/* [annotation][in] */ /* [annotation][in] */
__in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps,
/* [annotation][in] */ /* [annotation][in] */
__in DWORD cb) = 0; _In_ DWORD cb) = 0;
virtual HRESULT STDMETHODCALLTYPE GetPropertyStorage( virtual HRESULT STDMETHODCALLTYPE GetPropertyStorage(
/* [annotation][out] */ /* [annotation][out] */
__deref_out_bcount(*pcb) SERIALIZEDPROPSTORAGE **ppsps, _Outptr_result_bytebuffer_(*pcb) SERIALIZEDPROPSTORAGE **ppsps,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcb) = 0; _Out_ DWORD *pcb) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IPersistSerializedPropStorageVtbl typedef struct IPersistSerializedPropStorageVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IPersistSerializedPropStorage * This, IPersistSerializedPropStorage * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IPersistSerializedPropStorage * This); IPersistSerializedPropStorage * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IPersistSerializedPropStorage * This); IPersistSerializedPropStorage * This);
HRESULT ( STDMETHODCALLTYPE *SetFlags )( HRESULT ( STDMETHODCALLTYPE *SetFlags )(
IPersistSerializedPropStorage * This, IPersistSerializedPropStorage * This,
/* [in] */ PERSIST_SPROPSTORE_FLAGS flags); /* [in] */ PERSIST_SPROPSTORE_FLAGS flags);
HRESULT ( STDMETHODCALLTYPE *SetPropertyStorage )( HRESULT ( STDMETHODCALLTYPE *SetPropertyStorage )(
IPersistSerializedPropStorage * This, IPersistSerializedPropStorage * This,
/* [annotation][in] */ /* [annotation][in] */
__in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps,
/* [annotation][in] */ /* [annotation][in] */
__in DWORD cb); _In_ DWORD cb);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStorage )( HRESULT ( STDMETHODCALLTYPE *GetPropertyStorage )(
IPersistSerializedPropStorage * This, IPersistSerializedPropStorage * This,
/* [annotation][out] */ /* [annotation][out] */
__deref_out_bcount(*pcb) SERIALIZEDPROPSTORAGE **ppsps, _Outptr_result_bytebuffer_(*pcb) SERIALIZEDPROPSTORAGE **ppsps,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcb); _Out_ DWORD *pcb);
END_INTERFACE END_INTERFACE
} IPersistSerializedPropStorageVtbl; } IPersistSerializedPropStorageVtbl;
interface IPersistSerializedPropStorage interface IPersistSerializedPropStorage
{ {
CONST_VTBL struct IPersistSerializedPropStorageVtbl *lpVtbl; CONST_VTBL struct IPersistSerializedPropStorageVtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 3499 skipping to change at line 3557
EXTERN_C const IID IID_IPersistSerializedPropStorage2; EXTERN_C const IID IID_IPersistSerializedPropStorage2;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("77effa68-4f98-4366-ba72-573b3d880571") MIDL_INTERFACE("77effa68-4f98-4366-ba72-573b3d880571")
IPersistSerializedPropStorage2 : public IPersistSerializedPropStorage IPersistSerializedPropStorage2 : public IPersistSerializedPropStorage
{ {
public: public:
virtual HRESULT STDMETHODCALLTYPE GetPropertyStorageSize( virtual HRESULT STDMETHODCALLTYPE GetPropertyStorageSize(
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcb) = 0; _Out_ DWORD *pcb) = 0;
virtual HRESULT STDMETHODCALLTYPE GetPropertyStorageBuffer( virtual HRESULT STDMETHODCALLTYPE GetPropertyStorageBuffer(
/* [annotation][out] */ /* [annotation][out] */
__out_bcount_part(cb, *pcbWritten) SERIALIZEDPROPSTORAGE *psps, _Out_writes_bytes_to_(cb, *pcbWritten) SERIALIZEDPROPSTORAGE *psps,
/* [in] */ DWORD cb, /* [in] */ DWORD cb,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcbWritten) = 0; _Out_ DWORD *pcbWritten) = 0;
}; };
#else /* C style interface */ #else /* C style interface */
typedef struct IPersistSerializedPropStorage2Vtbl typedef struct IPersistSerializedPropStorage2Vtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IPersistSerializedPropStorage2 * This, IPersistSerializedPropStorage2 * This,
/* [in] */ REFIID riid, /* [in] */ REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
IPersistSerializedPropStorage2 * This); IPersistSerializedPropStorage2 * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
IPersistSerializedPropStorage2 * This); IPersistSerializedPropStorage2 * This);
HRESULT ( STDMETHODCALLTYPE *SetFlags )( HRESULT ( STDMETHODCALLTYPE *SetFlags )(
IPersistSerializedPropStorage2 * This, IPersistSerializedPropStorage2 * This,
/* [in] */ PERSIST_SPROPSTORE_FLAGS flags); /* [in] */ PERSIST_SPROPSTORE_FLAGS flags);
HRESULT ( STDMETHODCALLTYPE *SetPropertyStorage )( HRESULT ( STDMETHODCALLTYPE *SetPropertyStorage )(
IPersistSerializedPropStorage2 * This, IPersistSerializedPropStorage2 * This,
/* [annotation][in] */ /* [annotation][in] */
__in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps,
/* [annotation][in] */ /* [annotation][in] */
__in DWORD cb); _In_ DWORD cb);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStorage )( HRESULT ( STDMETHODCALLTYPE *GetPropertyStorage )(
IPersistSerializedPropStorage2 * This, IPersistSerializedPropStorage2 * This,
/* [annotation][out] */ /* [annotation][out] */
__deref_out_bcount(*pcb) SERIALIZEDPROPSTORAGE **ppsps, _Outptr_result_bytebuffer_(*pcb) SERIALIZEDPROPSTORAGE **ppsps,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcb); _Out_ DWORD *pcb);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStorageSize )( HRESULT ( STDMETHODCALLTYPE *GetPropertyStorageSize )(
IPersistSerializedPropStorage2 * This, IPersistSerializedPropStorage2 * This,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcb); _Out_ DWORD *pcb);
HRESULT ( STDMETHODCALLTYPE *GetPropertyStorageBuffer )( HRESULT ( STDMETHODCALLTYPE *GetPropertyStorageBuffer )(
IPersistSerializedPropStorage2 * This, IPersistSerializedPropStorage2 * This,
/* [annotation][out] */ /* [annotation][out] */
__out_bcount_part(cb, *pcbWritten) SERIALIZEDPROPSTORAGE *psps, _Out_writes_bytes_to_(cb, *pcbWritten) SERIALIZEDPROPSTORAGE *psps,
/* [in] */ DWORD cb, /* [in] */ DWORD cb,
/* [annotation][out] */ /* [annotation][out] */
__out DWORD *pcbWritten); _Out_ DWORD *pcbWritten);
END_INTERFACE END_INTERFACE
} IPersistSerializedPropStorage2Vtbl; } IPersistSerializedPropStorage2Vtbl;
interface IPersistSerializedPropStorage2 interface IPersistSerializedPropStorage2
{ {
CONST_VTBL struct IPersistSerializedPropStorage2Vtbl *lpVtbl; CONST_VTBL struct IPersistSerializedPropStorage2Vtbl *lpVtbl;
}; };
#ifdef COBJMACROS #ifdef COBJMACROS
skipping to change at line 3627 skipping to change at line 3685
#else /* C style interface */ #else /* C style interface */
typedef struct IPropertySystemChangeNotifyVtbl typedef struct IPropertySystemChangeNotifyVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in IPropertySystemChangeNotify * This, __RPC__in IPropertySystemChangeNotify * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in IPropertySystemChangeNotify * This); __RPC__in IPropertySystemChangeNotify * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in IPropertySystemChangeNotify * This); __RPC__in IPropertySystemChangeNotify * This);
HRESULT ( STDMETHODCALLTYPE *SchemaRefreshed )( HRESULT ( STDMETHODCALLTYPE *SchemaRefreshed )(
__RPC__in IPropertySystemChangeNotify * This); __RPC__in IPropertySystemChangeNotify * This);
skipping to change at line 3698 skipping to change at line 3756
#else /* C style interface */ #else /* C style interface */
typedef struct ICreateObjectVtbl typedef struct ICreateObjectVtbl
{ {
BEGIN_INTERFACE BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ICreateObject * This, __RPC__in ICreateObject * This,
/* [in] */ __RPC__in REFIID riid, /* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */ /* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject); _COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )( ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ICreateObject * This); __RPC__in ICreateObject * This);
ULONG ( STDMETHODCALLTYPE *Release )( ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ICreateObject * This); __RPC__in ICreateObject * This);
HRESULT ( STDMETHODCALLTYPE *CreateObject )( HRESULT ( STDMETHODCALLTYPE *CreateObject )(
__RPC__in ICreateObject * This, __RPC__in ICreateObject * This,
/* [in] */ __RPC__in REFCLSID clsid, /* [in] */ __RPC__in REFCLSID clsid,
skipping to change at line 3746 skipping to change at line 3804
#endif /* C style interface */ #endif /* C style interface */
#endif /* __ICreateObject_INTERFACE_DEFINED__ */ #endif /* __ICreateObject_INTERFACE_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0025 */ /* interface __MIDL_itf_propsys_0000_0025 */
/* [local] */ /* [local] */
// Format a property value for display purposes // Format a property value for display purposes
PSSTDAPI PSFormatForDisplay( PSSTDAPI PSFormatForDisplay(
__in REFPROPERTYKEY propkey, _In_ REFPROPERTYKEY propkey,
__in REFPROPVARIANT propvar, _In_ REFPROPVARIANT propvar,
__in PROPDESC_FORMAT_FLAGS pdfFlags, _In_ PROPDESC_FORMAT_FLAGS pdfFlags,
__out_ecount(cchText) LPWSTR pwszText, _Out_writes_(cchText) LPWSTR pwszText,
__in DWORD cchText); _In_ DWORD cchText);
PSSTDAPI PSFormatForDisplayAlloc( PSSTDAPI PSFormatForDisplayAlloc(
__in REFPROPERTYKEY key, _In_ REFPROPERTYKEY key,
__in REFPROPVARIANT propvar, _In_ REFPROPVARIANT propvar,
__in PROPDESC_FORMAT_FLAGS pdff, _In_ PROPDESC_FORMAT_FLAGS pdff,
__deref_out PWSTR *ppszDisplay); _Outptr_ PWSTR *ppszDisplay);
PSSTDAPI PSFormatPropertyValue( PSSTDAPI PSFormatPropertyValue(
__in IPropertyStore *pps, _In_ IPropertyStore *pps,
__in IPropertyDescription *ppd, _In_ IPropertyDescription *ppd,
__in PROPDESC_FORMAT_FLAGS pdff, _In_ PROPDESC_FORMAT_FLAGS pdff,
__deref_out LPWSTR *ppszDisplay); _Outptr_ LPWSTR *ppszDisplay);
// Retrieve the image reference associated with a property value (if specified) // Retrieve the image reference associated with a property value (if specified)
PSSTDAPI PSGetImageReferenceForValue( PSSTDAPI PSGetImageReferenceForValue(
__in REFPROPERTYKEY propkey, _In_ REFPROPERTYKEY propkey,
__in REFPROPVARIANT propvar, _In_ REFPROPVARIANT propvar,
__deref_out PWSTR *ppszImageRes); _Outptr_ PWSTR *ppszImageRes);
#define PKEY_PIDSTR_MAX 10 // will take care of any long integer value #define PKEY_PIDSTR_MAX 10 // will take care of any long integer value
#define GUIDSTRING_MAX (1 + 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1) // "{12345678-1234-1234-1234-123456789012}" #define GUIDSTRING_MAX (1 + 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1) // "{12345678-1234-1234-1234-123456789012}"
#define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX) #define PKEYSTR_MAX (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)
// Convert a PROPERTYKEY to and from a PWSTR // Convert a PROPERTYKEY to and from a PWSTR
PSSTDAPI PSStringFromPropertyKey( PSSTDAPI PSStringFromPropertyKey(
__in REFPROPERTYKEY pkey, _In_ REFPROPERTYKEY pkey,
__out_ecount(cch) LPWSTR psz, _Out_writes_(cch) LPWSTR psz,
__in UINT cch); _In_ UINT cch);
PSSTDAPI PSPropertyKeyFromString( PSSTDAPI PSPropertyKeyFromString(
__in LPCWSTR pszString, _In_ LPCWSTR pszString,
__out PROPERTYKEY *pkey); _Out_ PROPERTYKEY *pkey);
// Creates an in-memory property store // Creates an in-memory property store
// Returns an IPropertyStore, IPersistSerializedPropStorage, and related interfa ces interface // Returns an IPropertyStore, IPersistSerializedPropStorage, and related interfa ces interface
PSSTDAPI PSCreateMemoryPropertyStore( PSSTDAPI PSCreateMemoryPropertyStore(
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Create a read-only, delay-bind multiplexing property store // Create a read-only, delay-bind multiplexing property store
// Returns an IPropertyStore interface or related interfaces // Returns an IPropertyStore interface or related interfaces
PSSTDAPI PSCreateDelayedMultiplexPropertyStore( PSSTDAPI PSCreateDelayedMultiplexPropertyStore(
__in GETPROPERTYSTOREFLAGS flags, _In_ GETPROPERTYSTOREFLAGS flags,
__in IDelayedPropertyStoreFactory *pdpsf, _In_ IDelayedPropertyStoreFactory *pdpsf,
__in_ecount(cStores) const DWORD *rgStoreIds, _In_reads_(cStores) const DWORD *rgStoreIds,
__in DWORD cStores, _In_ DWORD cStores,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Create a read-only property store from one or more sources (which each must s upport either IPropertyStore or IPropertySetStorage) // Create a read-only property store from one or more sources (which each must s upport either IPropertyStore or IPropertySetStorage)
// Returns an IPropertyStore interface or related interfaces // Returns an IPropertyStore interface or related interfaces
PSSTDAPI PSCreateMultiplexPropertyStore( PSSTDAPI PSCreateMultiplexPropertyStore(
__in_ecount(cStores) IUnknown **prgpunkStores, _In_reads_(cStores) IUnknown **prgpunkStores,
__in DWORD cStores, _In_ DWORD cStores,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Create a container for IPropertyChanges // Create a container for IPropertyChanges
// Returns an IPropertyChangeArray interface // Returns an IPropertyChangeArray interface
PSSTDAPI PSCreatePropertyChangeArray( PSSTDAPI PSCreatePropertyChangeArray(
__in_ecount_opt(cChanges) const PROPERTYKEY *rgpropkey, _In_reads_opt_(cChanges) const PROPERTYKEY *rgpropkey,
__in_ecount_opt(cChanges) const PKA_FLAGS *rgflags, _In_reads_opt_(cChanges) const PKA_FLAGS *rgflags,
__in_ecount_opt(cChanges) const PROPVARIANT *rgpropvar, _In_reads_opt_(cChanges) const PROPVARIANT *rgpropvar,
__in UINT cChanges, _In_ UINT cChanges,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Create a simple property change // Create a simple property change
// Returns an IPropertyChange interface // Returns an IPropertyChange interface
PSSTDAPI PSCreateSimplePropertyChange( PSSTDAPI PSCreateSimplePropertyChange(
__in PKA_FLAGS flags, _In_ PKA_FLAGS flags,
__in REFPROPERTYKEY key, _In_ REFPROPERTYKEY key,
__in REFPROPVARIANT propvar, _In_ REFPROPVARIANT propvar,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Get a property description // Get a property description
// Returns an IPropertyDescription interface // Returns an IPropertyDescription interface
PSSTDAPI PSGetPropertyDescription( PSSTDAPI PSGetPropertyDescription(
__in REFPROPERTYKEY propkey, _In_ REFPROPERTYKEY propkey,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
PSSTDAPI PSGetPropertyDescriptionByName( PSSTDAPI PSGetPropertyDescriptionByName(
__in LPCWSTR pszCanonicalName, _In_ LPCWSTR pszCanonicalName,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Lookup a per-machine registered file property handler // Lookup a per-machine registered file property handler
PSSTDAPI PSLookupPropertyHandlerCLSID( PSSTDAPI PSLookupPropertyHandlerCLSID(
__in PCWSTR pszFilePath, _In_ PCWSTR pszFilePath,
__out CLSID *pclsid); _Out_ CLSID *pclsid);
// Get a property handler, on Vista or downlevel to XP // Get a property handler, on Vista or downlevel to XP
// punkItem is a shell item created with an SHCreateItemXXX API // punkItem is a shell item created with an SHCreateItemXXX API
// Returns an IPropertyStore // Returns an IPropertyStore
PSSTDAPI PSGetItemPropertyHandler( PSSTDAPI PSGetItemPropertyHandler(
__in IUnknown *punkItem, _In_ IUnknown *punkItem,
__in BOOL fReadWrite, _In_ BOOL fReadWrite,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Get a property handler, on Vista or downlevel to XP // Get a property handler, on Vista or downlevel to XP
// punkItem is a shell item created with an SHCreateItemXXX API // punkItem is a shell item created with an SHCreateItemXXX API
// punkCreateObject supports ICreateObject // punkCreateObject supports ICreateObject
// Returns an IPropertyStore // Returns an IPropertyStore
PSSTDAPI PSGetItemPropertyHandlerWithCreateObject( PSSTDAPI PSGetItemPropertyHandlerWithCreateObject(
__in IUnknown *punkItem, _In_ IUnknown *punkItem,
__in BOOL fReadWrite, _In_ BOOL fReadWrite,
__in IUnknown *punkCreateObject, _In_ IUnknown *punkCreateObject,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Get or set a property value from a store // Get or set a property value from a store
PSSTDAPI PSGetPropertyValue( PSSTDAPI PSGetPropertyValue(
__in IPropertyStore *pps, _In_ IPropertyStore *pps,
__in IPropertyDescription *ppd, _In_ IPropertyDescription *ppd,
__out PROPVARIANT *ppropvar); _Out_ PROPVARIANT *ppropvar);
PSSTDAPI PSSetPropertyValue( PSSTDAPI PSSetPropertyValue(
__in IPropertyStore *pps, _In_ IPropertyStore *pps,
__in IPropertyDescription *ppd, _In_ IPropertyDescription *ppd,
__in REFPROPVARIANT propvar); _In_ REFPROPVARIANT propvar);
// Interact with the set of property descriptions // Interact with the set of property descriptions
PSSTDAPI PSRegisterPropertySchema( PSSTDAPI PSRegisterPropertySchema(
__in PCWSTR pszPath); _In_ PCWSTR pszPath);
PSSTDAPI PSUnregisterPropertySchema( PSSTDAPI PSUnregisterPropertySchema(
__in PCWSTR pszPath); _In_ PCWSTR pszPath);
PSSTDAPI PSRefreshPropertySchema(void); PSSTDAPI PSRefreshPropertySchema(void);
// Returns either: IPropertyDescriptionList or IEnumUnknown interfaces // Returns either: IPropertyDescriptionList or IEnumUnknown interfaces
PSSTDAPI PSEnumeratePropertyDescriptions( PSSTDAPI PSEnumeratePropertyDescriptions(
__in PROPDESC_ENUMFILTER filterOn, _In_ PROPDESC_ENUMFILTER filterOn,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Convert between a PROPERTYKEY and its canonical name // Convert between a PROPERTYKEY and its canonical name
PSSTDAPI PSGetPropertyKeyFromName( PSSTDAPI PSGetPropertyKeyFromName(
__in PCWSTR pszName, _In_ PCWSTR pszName,
__out PROPERTYKEY *ppropkey); _Out_ PROPERTYKEY *ppropkey);
PSSTDAPI PSGetNameFromPropertyKey( PSSTDAPI PSGetNameFromPropertyKey(
__in REFPROPERTYKEY propkey, _In_ REFPROPERTYKEY propkey,
__deref_out PWSTR *ppszCanonicalName); _Outptr_ PWSTR *ppszCanonicalName);
// Coerce and canonicalize a property value // Coerce and canonicalize a property value
PSSTDAPI PSCoerceToCanonicalValue( PSSTDAPI PSCoerceToCanonicalValue(
__in REFPROPERTYKEY key, _In_ REFPROPERTYKEY key,
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
// Convert a 'prop:' string into a list of property descriptions // Convert a 'prop:' string into a list of property descriptions
// Returns an IPropertyDescriptionList interface // Returns an IPropertyDescriptionList interface
PSSTDAPI PSGetPropertyDescriptionListFromString( PSSTDAPI PSGetPropertyDescriptionListFromString(
__in LPCWSTR pszPropList, _In_ LPCWSTR pszPropList,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Wrap an IPropertySetStorage interface in an IPropertyStore interface // Wrap an IPropertySetStorage interface in an IPropertyStore interface
// Returns an IPropertyStore or related interface // Returns an IPropertyStore or related interface
PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage( PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage(
__in IPropertySetStorage *ppss, _In_ IPropertySetStorage *ppss,
__in DWORD grfMode, _In_ DWORD grfMode,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// punkSource must support IPropertyStore or IPropertySetStorage // punkSource must support IPropertyStore or IPropertySetStorage
// On success, the returned ppv is guaranteed to support IPropertyStore. // On success, the returned ppv is guaranteed to support IPropertyStore.
// If punkSource already supports IPropertyStore, no wrapper is created. // If punkSource already supports IPropertyStore, no wrapper is created.
PSSTDAPI PSCreatePropertyStoreFromObject( PSSTDAPI PSCreatePropertyStoreFromObject(
__in IUnknown *punk, _In_ IUnknown *punk,
__in DWORD grfMode, _In_ DWORD grfMode,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// punkSource must support IPropertyStore // punkSource must support IPropertyStore
// riid may be IPropertyStore, IPropertySetStorage, IPropertyStoreCapabilities, or IObjectProvider // riid may be IPropertyStore, IPropertySetStorage, IPropertyStoreCapabilities, or IObjectProvider
PSSTDAPI PSCreateAdapterFromPropertyStore( PSSTDAPI PSCreateAdapterFromPropertyStore(
__in IPropertyStore *pps, _In_ IPropertyStore *pps,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Talk to the property system using an interface // Talk to the property system using an interface
// Returns an IPropertySystem interface // Returns an IPropertySystem interface
PSSTDAPI PSGetPropertySystem( PSSTDAPI PSGetPropertySystem(
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
// Obtain a value from serialized property storage // Obtain a value from serialized property storage
PSSTDAPI PSGetPropertyFromPropertyStorage( PSSTDAPI PSGetPropertyFromPropertyStorage(
__in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps,
__in DWORD cb, _In_ DWORD cb,
__in REFPROPERTYKEY rpkey, _In_ REFPROPERTYKEY rpkey,
__out PROPVARIANT *ppropvar); _Out_ PROPVARIANT *ppropvar);
// Obtain a named value from serialized property storage // Obtain a named value from serialized property storage
PSSTDAPI PSGetNamedPropertyFromPropertyStorage( PSSTDAPI PSGetNamedPropertyFromPropertyStorage(
__in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps,
__in DWORD cb, _In_ DWORD cb,
__in LPCWSTR pszName, _In_ LPCWSTR pszName,
__out PROPVARIANT *ppropvar); _Out_ PROPVARIANT *ppropvar);
// Helper functions for reading and writing values from IPropertyBag's. // Helper functions for reading and writing values from IPropertyBag's.
PSSTDAPI PSPropertyBag_ReadType( PSSTDAPI PSPropertyBag_ReadType(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out VARIANT *var, _Out_ VARIANT *var,
VARTYPE type); VARTYPE type);
PSSTDAPI PSPropertyBag_ReadStr( PSSTDAPI PSPropertyBag_ReadStr(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out_ecount(characterCount) LPWSTR value, _Out_writes_(characterCount) LPWSTR value,
int characterCount); int characterCount);
PSSTDAPI PSPropertyBag_ReadStrAlloc( PSSTDAPI PSPropertyBag_ReadStrAlloc(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__deref_out PWSTR *value); _Outptr_ PWSTR *value);
PSSTDAPI PSPropertyBag_ReadBSTR( PSSTDAPI PSPropertyBag_ReadBSTR(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__deref_out BSTR *value); _Outptr_ BSTR *value);
PSSTDAPI PSPropertyBag_WriteStr( PSSTDAPI PSPropertyBag_WriteStr(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in LPCWSTR value); _In_ LPCWSTR value);
PSSTDAPI PSPropertyBag_WriteBSTR( PSSTDAPI PSPropertyBag_WriteBSTR(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in BSTR value); _In_ BSTR value);
PSSTDAPI PSPropertyBag_ReadInt( PSSTDAPI PSPropertyBag_ReadInt(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out INT *value); _Out_ INT *value);
PSSTDAPI PSPropertyBag_WriteInt( PSSTDAPI PSPropertyBag_WriteInt(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
INT value); INT value);
PSSTDAPI PSPropertyBag_ReadSHORT( PSSTDAPI PSPropertyBag_ReadSHORT(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out SHORT *value); _Out_ SHORT *value);
PSSTDAPI PSPropertyBag_WriteSHORT( PSSTDAPI PSPropertyBag_WriteSHORT(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
SHORT value); SHORT value);
PSSTDAPI PSPropertyBag_ReadLONG( PSSTDAPI PSPropertyBag_ReadLONG(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out LONG *value); _Out_ LONG *value);
PSSTDAPI PSPropertyBag_WriteLONG( PSSTDAPI PSPropertyBag_WriteLONG(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
LONG value); LONG value);
PSSTDAPI PSPropertyBag_ReadDWORD( PSSTDAPI PSPropertyBag_ReadDWORD(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out DWORD *value); _Out_ DWORD *value);
PSSTDAPI PSPropertyBag_WriteDWORD( PSSTDAPI PSPropertyBag_WriteDWORD(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
DWORD value); DWORD value);
PSSTDAPI PSPropertyBag_ReadBOOL( PSSTDAPI PSPropertyBag_ReadBOOL(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out BOOL *value); _Out_ BOOL *value);
PSSTDAPI PSPropertyBag_WriteBOOL( PSSTDAPI PSPropertyBag_WriteBOOL(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
BOOL value); BOOL value);
PSSTDAPI PSPropertyBag_ReadPOINTL( PSSTDAPI PSPropertyBag_ReadPOINTL(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out POINTL *value); _Out_ POINTL *value);
PSSTDAPI PSPropertyBag_WritePOINTL( PSSTDAPI PSPropertyBag_WritePOINTL(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in const POINTL *value); _In_ const POINTL *value);
PSSTDAPI PSPropertyBag_ReadPOINTS( PSSTDAPI PSPropertyBag_ReadPOINTS(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out POINTS *value); _Out_ POINTS *value);
PSSTDAPI PSPropertyBag_WritePOINTS( PSSTDAPI PSPropertyBag_WritePOINTS(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in const POINTS *value); _In_ const POINTS *value);
PSSTDAPI PSPropertyBag_ReadRECTL( PSSTDAPI PSPropertyBag_ReadRECTL(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out RECTL *value); _Out_ RECTL *value);
PSSTDAPI PSPropertyBag_WriteRECTL( PSSTDAPI PSPropertyBag_WriteRECTL(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in const RECTL *value); _In_ const RECTL *value);
PSSTDAPI PSPropertyBag_ReadStream( PSSTDAPI PSPropertyBag_ReadStream(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__deref_out IStream **value); _Outptr_ IStream **value);
PSSTDAPI PSPropertyBag_WriteStream( PSSTDAPI PSPropertyBag_WriteStream(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in IStream *value); _In_ IStream *value);
PSSTDAPI PSPropertyBag_Delete( PSSTDAPI PSPropertyBag_Delete(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName); _In_ LPCWSTR propName);
PSSTDAPI PSPropertyBag_ReadULONGLONG( PSSTDAPI PSPropertyBag_ReadULONGLONG(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out ULONGLONG *value); _Out_ ULONGLONG *value);
PSSTDAPI PSPropertyBag_WriteULONGLONG( PSSTDAPI PSPropertyBag_WriteULONGLONG(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
ULONGLONG value); ULONGLONG value);
PSSTDAPI PSPropertyBag_ReadUnknown( PSSTDAPI PSPropertyBag_ReadUnknown(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in REFIID riid, _In_ REFIID riid,
__deref_out void **ppv); _Outptr_ void **ppv);
PSSTDAPI PSPropertyBag_WriteUnknown( PSSTDAPI PSPropertyBag_WriteUnknown(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in IUnknown *punk); _In_ IUnknown *punk);
PSSTDAPI PSPropertyBag_ReadGUID( PSSTDAPI PSPropertyBag_ReadGUID(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out GUID *value); _Out_ GUID *value);
PSSTDAPI PSPropertyBag_WriteGUID( PSSTDAPI PSPropertyBag_WriteGUID(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in const GUID *value); _In_ const GUID *value);
PSSTDAPI PSPropertyBag_ReadPropertyKey( PSSTDAPI PSPropertyBag_ReadPropertyKey(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__out PROPERTYKEY *value); _Out_ PROPERTYKEY *value);
PSSTDAPI PSPropertyBag_WritePropertyKey( PSSTDAPI PSPropertyBag_WritePropertyKey(
__in IPropertyBag *propBag, _In_ IPropertyBag *propBag,
__in LPCWSTR propName, _In_ LPCWSTR propName,
__in REFPROPERTYKEY value); _In_ REFPROPERTYKEY value);
PSSTDAPI PropVariantToWinRTPropertyValue(_In_ REFPROPVARIANT propvar, _In_ REFII
D riid, _COM_Outptr_result_maybenull_ void **ppv);
PSSTDAPI WinRTPropertyValueToPropVariant(_In_opt_ IUnknown *punkPropertyValue, _
Out_ PROPVARIANT *ppropvar);
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0025_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0025_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0025_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0025_v0_0_s_ifspec;
#ifndef __PropSysObjects_LIBRARY_DEFINED__ #ifndef __PropSysObjects_LIBRARY_DEFINED__
#define __PropSysObjects_LIBRARY_DEFINED__ #define __PropSysObjects_LIBRARY_DEFINED__
/* library PropSysObjects */ /* library PropSysObjects */
/* [version][lcid][uuid] */ /* [version][lcid][uuid] */
skipping to change at line 4118 skipping to change at line 4178
EXTERN_C const CLSID CLSID_PropertySystem; EXTERN_C const CLSID CLSID_PropertySystem;
#ifdef __cplusplus #ifdef __cplusplus
class DECLSPEC_UUID("b8967f85-58ae-4f46-9fb2-5d7904798f4b") class DECLSPEC_UUID("b8967f85-58ae-4f46-9fb2-5d7904798f4b")
PropertySystem; PropertySystem;
#endif #endif
#endif /* __PropSysObjects_LIBRARY_DEFINED__ */ #endif /* __PropSysObjects_LIBRARY_DEFINED__ */
/* interface __MIDL_itf_propsys_0000_0026 */
/* [local] */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0026_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0026_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */ /* Additional Prototypes for ALL interfaces */
unsigned long __RPC_USER BSTR_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * ); unsigned long __RPC_USER BSTR_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned long *, __RPC_ _inout_xcount(0) unsigned char *, __RPC__in BSTR * ); unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned long *, __RPC_ _inout_xcount(0) unsigned char *, __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC_ _in_xcount(0) unsigned char *, __RPC__out BSTR * ); unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC_ _in_xcount(0) unsigned char *, __RPC__out BSTR * );
void __RPC_USER BSTR_UserFree( __RPC__in unsigned long *, __RPC__in BSTR * ); void __RPC_USER BSTR_UserFree( __RPC__in unsigned long *, __RPC__in BSTR * );
unsigned long __RPC_USER LPSAFEARRAY_UserSize( __RPC__in unsign ed long *, unsigned long , __RPC__in LPSAFEARRAY * ); unsigned long __RPC_USER LPSAFEARRAY_UserSize( __RPC__in unsign ed long *, unsigned long , __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * ); unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * ); unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * );
skipping to change at line 4143 skipping to change at line 4212
void __RPC_USER BSTR_UserFree64( __RPC__in unsigned lo ng *, __RPC__in BSTR * ); void __RPC_USER BSTR_UserFree64( __RPC__in unsigned lo ng *, __RPC__in BSTR * );
unsigned long __RPC_USER LPSAFEARRAY_UserSize64( __RPC__in unsi gned long *, unsigned long , __RPC__in LPSAFEARRAY * ); unsigned long __RPC_USER LPSAFEARRAY_UserSize64( __RPC__in unsi gned long *, unsigned long , __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * ); unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * ); unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * );
void __RPC_USER LPSAFEARRAY_UserFree64( __RPC__in unsi gned long *, __RPC__in LPSAFEARRAY * ); void __RPC_USER LPSAFEARRAY_UserFree64( __RPC__in unsi gned long *, __RPC__in LPSAFEARRAY * );
/* [local] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Proxy( /* [local] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Proxy(
IInitializeWithStream * This, IInitializeWithStream * This,
/* [annotation][in] */ /* [annotation][in] */
__in IStream *pstream, _In_ IStream *pstream,
/* [annotation][in] */ /* [annotation][in] */
__in DWORD grfMode); _In_ DWORD grfMode);
/* [call_as] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Stub( /* [call_as] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Stub(
__RPC__in IInitializeWithStream * This, __RPC__in IInitializeWithStream * This,
/* [in] */ __RPC__in_opt IStream *pstream, /* [in] */ __RPC__in_opt IStream *pstream,
/* [in] */ DWORD grfMode); /* [in] */ DWORD grfMode);
/* [local] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonicalVa lue_Proxy( /* [local] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonicalVa lue_Proxy(
IPropertyDescription * This, IPropertyDescription * This,
/* [annotation][out][in] */ /* [annotation][out][in] */
__inout PROPVARIANT *ppropvar); _Inout_ PROPVARIANT *ppropvar);
/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonical Value_Stub( /* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonical Value_Stub(
__RPC__in IPropertyDescription * This, __RPC__in IPropertyDescription * This,
/* [in] */ __RPC__in REFPROPVARIANT propvar, /* [in] */ __RPC__in REFPROPVARIANT propvar,
/* [out] */ __RPC__out PROPVARIANT *ppropvar); /* [out] */ __RPC__out PROPVARIANT *ppropvar);
/* end of Additional Prototypes */ /* end of Additional Prototypes */
#ifdef __cplusplus #ifdef __cplusplus
} }
 End of changes. 143 change blocks. 
386 lines changed or deleted 432 lines changed or added


 propvarutil.h (7.00.7601.17514-Windows_7.0)   propvarutil.h (7.00.9600.17415-Windows_8.1) 
//=========================================================================== //===========================================================================
// //
// Copyright (c) Microsoft Corporation. All rights reserved. // Copyright (c) Microsoft Corporation. All rights reserved.
// //
// propvarutil.h - Variant and PropVariant helpers // propvarutil.h - Variant and PropVariant helpers
// //
//=========================================================================== //===========================================================================
#pragma once #pragma once
#include <winapifamily.h>
typedef __success(return >= 0) LONG NTSTATUS; typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
#include <propapi.h> #include <propapi.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#include <shtypes.h> #include <shtypes.h>
#include <shlwapi.h> #include <shlwapi.h>
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#ifndef PSSTDAPI #ifndef PSSTDAPI
#if defined(_PROPSYS_) #if defined(_PROPSYS_)
#define PSSTDAPI STDAPI #define PSSTDAPI STDAPI
#define PSSTDAPI_(type) STDAPI_(type) #define PSSTDAPI_(type) STDAPI_(type)
#else #else
#define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE #define PSSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE #define PSSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
#endif #endif
#endif // PSSTDAPI #endif // PSSTDAPI
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
enum tagPSTIME_FLAGS enum tagPSTIME_FLAGS
{ {
PSTF_UTC = 0x00000000, PSTF_UTC = 0x00000000,
PSTF_LOCAL = 0x00000001, PSTF_LOCAL = 0x00000001,
}; };
typedef int PSTIME_FLAGS; typedef int PSTIME_FLAGS;
//==================== //====================
// //
// PropVariant Helpers // PropVariant Helpers
// //
//==================== //====================
// Initialize a propvariant // Initialize a propvariant
PSSTDAPI InitPropVariantFromResource(__in HINSTANCE hinst, __in UINT id, __out P PSSTDAPI InitPropVariantFromResource(_In_ HINSTANCE hinst, _In_ UINT id, _Out_ P
ROPVARIANT *ppropvar); ROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromBuffer(__in_bcount(cb) const void *pv, __in UINT cb, PSSTDAPI InitPropVariantFromBuffer(_In_reads_bytes_(cb) const void *pv, _In_ UIN
__out PROPVARIANT *ppropvar); T cb, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromCLSID(__in REFCLSID clsid, __out PROPVARIANT *ppropv PSSTDAPI InitPropVariantFromCLSID(_In_ REFCLSID clsid, _Out_ PROPVARIANT *ppropv
ar); ar);
PSSTDAPI InitPropVariantFromGUIDAsString(__in REFGUID guid, __out PROPVARIANT *p PSSTDAPI InitPropVariantFromGUIDAsString(_In_ REFGUID guid, _Out_ PROPVARIANT *p
propvar); propvar);
PSSTDAPI InitPropVariantFromFileTime(__in const FILETIME *pftIn, __out PROPVARIA PSSTDAPI InitPropVariantFromFileTime(_In_ const FILETIME *pftIn, _Out_ PROPVARIA
NT *ppropvar); NT *ppropvar);
PSSTDAPI InitPropVariantFromPropVariantVectorElem(__in REFPROPVARIANT propvarIn, PSSTDAPI InitPropVariantFromPropVariantVectorElem(_In_ REFPROPVARIANT propvarIn,
__in ULONG iElem, __out PROPVARIANT *ppropvar); _In_ ULONG iElem, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantVectorFromPropVariant(__in REFPROPVARIANT propvarSingle, PSSTDAPI InitPropVariantVectorFromPropVariant(_In_ REFPROPVARIANT propvarSingle,
__out PROPVARIANT *ppropvarVector); _Out_ PROPVARIANT *ppropvarVector);
PSSTDAPI InitPropVariantFromStrRet(__inout STRRET *pstrret, __in_opt PCUITEMID_C PSSTDAPI InitPropVariantFromStrRet(_Inout_ STRRET *pstrret, _In_opt_ PCUITEMID_C
HILD pidl, __out PROPVARIANT *ppropvar); HILD pidl, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromBooleanVector(__in_ecount_opt(cElems) const BOOL *pr PSSTDAPI InitPropVariantFromBooleanVector(_In_reads_opt_(cElems) const BOOL *prg
gf, __in ULONG cElems, __out PROPVARIANT *ppropvar); f, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromInt16Vector(__in_ecount_opt(cElems) const SHORT *prg PSSTDAPI InitPropVariantFromInt16Vector(_In_reads_opt_(cElems) const SHORT *prgn
n, __in ULONG cElems, __out PROPVARIANT *ppropvar); , _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromUInt16Vector(__in_ecount_opt(cElems) const USHORT *p PSSTDAPI InitPropVariantFromUInt16Vector(_In_reads_opt_(cElems) const USHORT *pr
rgn, __in ULONG cElems, __out PROPVARIANT *ppropvar); gn, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromInt32Vector(__in_ecount_opt(cElems) const LONG *prgn PSSTDAPI InitPropVariantFromInt32Vector(_In_reads_opt_(cElems) const LONG *prgn,
, __in ULONG cElems, __out PROPVARIANT *ppropvar); _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromUInt32Vector(__in_ecount_opt(cElems) const ULONG *pr PSSTDAPI InitPropVariantFromUInt32Vector(_In_reads_opt_(cElems) const ULONG *prg
gn, __in ULONG cElems, __out PROPVARIANT *ppropvar); n, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromInt64Vector(__in_ecount_opt(cElems) const LONGLONG * PSSTDAPI InitPropVariantFromInt64Vector(_In_reads_opt_(cElems) const LONGLONG *p
prgn, __in ULONG cElems, __out PROPVARIANT *ppropvar); rgn, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromUInt64Vector(__in_ecount_opt(cElems) const ULONGLONG PSSTDAPI InitPropVariantFromUInt64Vector(_In_reads_opt_(cElems) const ULONGLONG
*prgn, __in ULONG cElems, __out PROPVARIANT *ppropvar); *prgn, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromDoubleVector(__in_ecount_opt(cElems) const DOUBLE *p PSSTDAPI InitPropVariantFromDoubleVector(_In_reads_opt_(cElems) const DOUBLE *pr
rgn, __in ULONG cElems, __out PROPVARIANT *ppropvar); gn, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromFileTimeVector(__in_ecount_opt(cElems) const FILETIM PSSTDAPI InitPropVariantFromFileTimeVector(_In_reads_opt_(cElems) const FILETIME
E *prgft, __in ULONG cElems, __out PROPVARIANT *ppropvar); *prgft, _In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromStringVector(__in_ecount_opt(cElems) PCWSTR *prgsz, PSSTDAPI InitPropVariantFromStringVector(_In_reads_opt_(cElems) PCWSTR *prgsz, _
__in ULONG cElems, __out PROPVARIANT *ppropvar); In_ ULONG cElems, _Out_ PROPVARIANT *ppropvar);
PSSTDAPI InitPropVariantFromStringAsVector(__in_opt PCWSTR psz, __out PROPVARIAN PSSTDAPI InitPropVariantFromStringAsVector(_In_opt_ PCWSTR psz, _Out_ PROPVARIAN
T *ppropvar); T *ppropvar);
#ifdef __cplusplus #ifdef __cplusplus
HRESULT InitPropVariantFromBoolean(__in BOOL fVal, __out PROPVARIANT *ppropvar) HRESULT InitPropVariantFromBoolean(_In_ BOOL fVal, _Out_ PROPVARIANT *ppropvar)
; ;
HRESULT InitPropVariantFromInt16(__in SHORT nVal, __out PROPVARIANT *ppropvar); HRESULT InitPropVariantFromInt16(_In_ SHORT nVal, _Out_ PROPVARIANT *ppropvar);
HRESULT InitPropVariantFromUInt16(__in USHORT uiVal, __out PROPVARIANT *ppropva HRESULT InitPropVariantFromUInt16(_In_ USHORT uiVal, _Out_ PROPVARIANT *ppropva
r); r);
HRESULT InitPropVariantFromInt32(__in LONG lVal, __out PROPVARIANT *ppropvar); HRESULT InitPropVariantFromInt32(_In_ LONG lVal, _Out_ PROPVARIANT *ppropvar);
HRESULT InitPropVariantFromUInt32(__in ULONG ulVal, __out PROPVARIANT *ppropvar HRESULT InitPropVariantFromUInt32(_In_ ULONG ulVal, _Out_ PROPVARIANT *ppropvar
); );
HRESULT InitPropVariantFromInt64(__in LONGLONG llVal, __out PROPVARIANT *ppropv HRESULT InitPropVariantFromInt64(_In_ LONGLONG llVal, _Out_ PROPVARIANT *ppropv
ar); ar);
HRESULT InitPropVariantFromUInt64(__in ULONGLONG ullVal, __out PROPVARIANT *ppr HRESULT InitPropVariantFromUInt64(_In_ ULONGLONG ullVal, _Out_ PROPVARIANT *ppr
opvar); opvar);
HRESULT InitPropVariantFromDouble(__in DOUBLE dblVal, __out PROPVARIANT *ppropv HRESULT InitPropVariantFromDouble(_In_ DOUBLE dblVal, _Out_ PROPVARIANT *ppropv
ar); ar);
HRESULT InitPropVariantFromString(__in PCWSTR psz, __out PROPVARIANT *ppropvar) HRESULT InitPropVariantFromString(_In_ PCWSTR psz, _Out_ PROPVARIANT *ppropvar)
; ;
HRESULT InitPropVariantFromGUIDAsBuffer(__in REFGUID guid, __out PROPVARIANT *p HRESULT InitPropVariantFromGUIDAsBuffer(_In_ REFGUID guid, _Out_ PROPVARIANT *p
propvar); propvar);
BOOL IsPropVariantVector(__in REFPROPVARIANT propvar); BOOL IsPropVariantVector(_In_ REFPROPVARIANT propvar);
BOOL IsPropVariantString(__in REFPROPVARIANT propvar); BOOL IsPropVariantString(_In_ REFPROPVARIANT propvar);
#endif #endif
// Extract data from a propvariant // Extract data from a propvariant
PSSTDAPI_(BOOL) PropVariantToBooleanWithDefault(__in REFPROPVARIANT propvar PSSTDAPI_(BOOL) PropVariantToBooleanWithDefault(_In_ REFPROPVARIANT propvar
In, __in BOOL fDefault); In, _In_ BOOL fDefault);
PSSTDAPI_(SHORT) PropVariantToInt16WithDefault(__in REFPROPVARIANT propvarIn PSSTDAPI_(SHORT) PropVariantToInt16WithDefault(_In_ REFPROPVARIANT propvarIn
, __in SHORT iDefault); , _In_ SHORT iDefault);
PSSTDAPI_(USHORT) PropVariantToUInt16WithDefault(__in REFPROPVARIANT propvarI PSSTDAPI_(USHORT) PropVariantToUInt16WithDefault(_In_ REFPROPVARIANT propvarI
n, __in USHORT uiDefault); n, _In_ USHORT uiDefault);
PSSTDAPI_(LONG) PropVariantToInt32WithDefault(__in REFPROPVARIANT propvarIn PSSTDAPI_(LONG) PropVariantToInt32WithDefault(_In_ REFPROPVARIANT propvarIn
, __in LONG lDefault); , _In_ LONG lDefault);
PSSTDAPI_(ULONG) PropVariantToUInt32WithDefault(__in REFPROPVARIANT propvarI PSSTDAPI_(ULONG) PropVariantToUInt32WithDefault(_In_ REFPROPVARIANT propvarI
n, __in ULONG ulDefault); n, _In_ ULONG ulDefault);
PSSTDAPI_(LONGLONG) PropVariantToInt64WithDefault(__in REFPROPVARIANT propvarIn PSSTDAPI_(LONGLONG) PropVariantToInt64WithDefault(_In_ REFPROPVARIANT propvarIn
, __in LONGLONG llDefault); , _In_ LONGLONG llDefault);
PSSTDAPI_(ULONGLONG) PropVariantToUInt64WithDefault(__in REFPROPVARIANT propvarI PSSTDAPI_(ULONGLONG) PropVariantToUInt64WithDefault(_In_ REFPROPVARIANT propvarI
n, __in ULONGLONG ullDefault); n, _In_ ULONGLONG ullDefault);
PSSTDAPI_(DOUBLE) PropVariantToDoubleWithDefault(__in REFPROPVARIANT propvarI PSSTDAPI_(DOUBLE) PropVariantToDoubleWithDefault(_In_ REFPROPVARIANT propvarI
n, __in DOUBLE dblDefault); n, _In_ DOUBLE dblDefault);
PSSTDAPI_(PCWSTR) PropVariantToStringWithDefault(__in REFPROPVARIANT propvarI PSSTDAPI_(PCWSTR) PropVariantToStringWithDefault(_In_ REFPROPVARIANT propvarI
n, __in_opt LPCWSTR pszDefault); n, _In_opt_ LPCWSTR pszDefault);
PSSTDAPI PropVariantToBoolean(__in REFPROPVARIANT propvarIn, __out B PSSTDAPI PropVariantToBoolean(_In_ REFPROPVARIANT propvarIn, _Out_ B
OOL *pfRet); OOL *pfRet);
PSSTDAPI PropVariantToInt16(__in REFPROPVARIANT propvarIn, __out SHO PSSTDAPI PropVariantToInt16(_In_ REFPROPVARIANT propvarIn, _Out_ SHO
RT *piRet); RT *piRet);
PSSTDAPI PropVariantToUInt16(__in REFPROPVARIANT propvarIn, __out US PSSTDAPI PropVariantToUInt16(_In_ REFPROPVARIANT propvarIn, _Out_ US
HORT *puiRet); HORT *puiRet);
PSSTDAPI PropVariantToInt32(__in REFPROPVARIANT propvarIn, __out LON PSSTDAPI PropVariantToInt32(_In_ REFPROPVARIANT propvarIn, _Out_ LON
G *plRet); G *plRet);
PSSTDAPI PropVariantToUInt32(__in REFPROPVARIANT propvarIn, __out UL PSSTDAPI PropVariantToUInt32(_In_ REFPROPVARIANT propvarIn, _Out_ UL
ONG *pulRet); ONG *pulRet);
PSSTDAPI PropVariantToInt64(__in REFPROPVARIANT propvarIn, __out LON PSSTDAPI PropVariantToInt64(_In_ REFPROPVARIANT propvarIn, _Out_ LON
GLONG *pllRet); GLONG *pllRet);
PSSTDAPI PropVariantToUInt64(__in REFPROPVARIANT propvarIn, __out UL PSSTDAPI PropVariantToUInt64(_In_ REFPROPVARIANT propvarIn, _Out_ UL
ONGLONG *pullRet); ONGLONG *pullRet);
PSSTDAPI PropVariantToDouble(__in REFPROPVARIANT propvarIn, __out DO PSSTDAPI PropVariantToDouble(_In_ REFPROPVARIANT propvarIn, _Out_ DO
UBLE *pdblRet); UBLE *pdblRet);
PSSTDAPI PropVariantToBuffer(__in REFPROPVARIANT propvar, __out_bcou PSSTDAPI PropVariantToBuffer(_In_ REFPROPVARIANT propvar, _Out_write
nt(cb) void *pv, __in UINT cb); s_bytes_(cb) void *pv, _In_ UINT cb);
PSSTDAPI PropVariantToString(__in REFPROPVARIANT propvar, __out_ecou PSSTDAPI PropVariantToString(_In_ REFPROPVARIANT propvar, _Out_write
nt(cch) PWSTR psz, __in UINT cch); s_(cch) PWSTR psz, _In_ UINT cch);
PSSTDAPI PropVariantToGUID(__in REFPROPVARIANT propvar, __out GUID * PSSTDAPI PropVariantToGUID(_In_ REFPROPVARIANT propvar, _Out_ GUID *
pguid); pguid);
__checkReturn PSSTDAPI PropVariantToStringAlloc(__in REFPROPVARIANT propvar, __d _Check_return_ PSSTDAPI PropVariantToStringAlloc(_In_ REFPROPVARIANT propvar, _O
eref_out PWSTR *ppszOut); utptr_result_nullonfailure_ PWSTR *ppszOut);
__checkReturn PSSTDAPI PropVariantToBSTR(__in REFPROPVARIANT propvar, __deref_ou _Check_return_ PSSTDAPI PropVariantToBSTR(_In_ REFPROPVARIANT propvar, _Outptr_r
t BSTR *pbstrOut); esult_nullonfailure_ BSTR *pbstrOut);
__checkReturn PSSTDAPI PropVariantToStrRet(__in REFPROPVARIANT propvar, __out ST _Check_return_ PSSTDAPI PropVariantToStrRet(_In_ REFPROPVARIANT propvar, _Out_ S
RRET *pstrret); TRRET *pstrret);
PSSTDAPI PropVariantToFileTime(__in REFPROPVARIANT propvar, __in PST PSSTDAPI PropVariantToFileTime(_In_ REFPROPVARIANT propvar, _In_ PST
IME_FLAGS pstfOut, __out FILETIME* pftOut); IME_FLAGS pstfOut, _Out_ FILETIME* pftOut);
#ifdef __cplusplus #ifdef __cplusplus
HRESULT PropVariantToCLSID(__in REFPROPVARIANT propvar, __out CLSID *pclsid); HRESULT PropVariantToCLSID(_In_ REFPROPVARIANT propvar, _Out_ CLSID *pclsid);
#endif #endif
// Returns element count of a VT_VECTOR or VT_ARRAY value; or 1 otherwise // Returns element count of a VT_VECTOR or VT_ARRAY value; or 1 otherwise
PSSTDAPI_(ULONG) PropVariantGetElementCount(__in REFPROPVARIANT propvar); PSSTDAPI_(ULONG) PropVariantGetElementCount(_In_ REFPROPVARIANT propvar);
// Extract data from a propvariant into a vector // Extract data from a propvariant into a vector
PSSTDAPI PropVariantToBooleanVector(__in REFPROPVARIANT propvar, __out_ecount_pa PSSTDAPI PropVariantToBooleanVector(_In_ REFPROPVARIANT propvar, _Out_writes_to_
rt(crgf, *pcElem) BOOL *prgf, __in ULONG crgf, __out ULONG *pcElem); (crgf, *pcElem) BOOL *prgf, _In_ ULONG crgf, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToInt16Vector(__in REFPROPVARIANT propvar, __out_ecount_part PSSTDAPI PropVariantToInt16Vector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(c
(crgn, *pcElem) SHORT *prgn, __in ULONG crgn, __out ULONG *pcElem); rgn, *pcElem) SHORT *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToUInt16Vector(__in REFPROPVARIANT propvar, __out_ecount_par PSSTDAPI PropVariantToUInt16Vector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(
t(crgn, *pcElem) USHORT *prgn, __in ULONG crgn, __out ULONG *pcElem); crgn, *pcElem) USHORT *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToInt32Vector(__in REFPROPVARIANT propvar, __out_ecount_part PSSTDAPI PropVariantToInt32Vector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(c
(crgn, *pcElem) LONG *prgn, __in ULONG crgn, __out ULONG *pcElem); rgn, *pcElem) LONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToUInt32Vector(__in REFPROPVARIANT propvar, __out_ecount_par PSSTDAPI PropVariantToUInt32Vector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(
t(crgn, *pcElem) ULONG *prgn, __in ULONG crgn, __out ULONG *pcElem); crgn, *pcElem) ULONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToInt64Vector(__in REFPROPVARIANT propvar, __out_ecount_part PSSTDAPI PropVariantToInt64Vector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(c
(crgn, *pcElem) LONGLONG *prgn, __in ULONG crgn, __out ULONG *pcElem); rgn, *pcElem) LONGLONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToUInt64Vector(__in REFPROPVARIANT propvar, __out_ecount_par PSSTDAPI PropVariantToUInt64Vector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(
t(crgn, *pcElem) ULONGLONG *prgn, __in ULONG crgn, __out ULONG *pcElem); crgn, *pcElem) ULONGLONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToDoubleVector(__in REFPROPVARIANT propvar, __out_ecount_par PSSTDAPI PropVariantToDoubleVector(_In_ REFPROPVARIANT propvar, _Out_writes_to_(
t(crgn, *pcElem) DOUBLE *prgn, __in ULONG crgn, __out ULONG *pcElem); crgn, *pcElem) DOUBLE *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI PropVariantToFileTimeVector(__in REFPROPVARIANT propvar, __out_ecount_p PSSTDAPI PropVariantToFileTimeVector(_In_ REFPROPVARIANT propvar, _Out_writes_to
art(crgft, *pcElem) FILETIME *prgft, __in ULONG crgft, __out ULONG *pcElem); _(crgft, *pcElem) FILETIME *prgft, _In_ ULONG crgft, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToStringVector(__in REFPROPVARIANT propvar, __ _Check_return_ PSSTDAPI PropVariantToStringVector(_In_ REFPROPVARIANT propvar, _
out_ecount_part(crgsz, *pcElem) PWSTR *prgsz, __in ULONG crgsz, __out ULONG *pcE Out_writes_to_(crgsz, *pcElem) PWSTR *prgsz, _In_ ULONG crgsz, _Out_ ULONG *pcEl
lem); em);
// Extract data from a propvariant and return an newly allocated vector (free wi th CoTaskMemFree) // Extract data from a propvariant and return an newly allocated vector (free wi th CoTaskMemFree)
__checkReturn PSSTDAPI PropVariantToBooleanVectorAlloc(__in REFPROPVARIANT propv _Check_return_ PSSTDAPI PropVariantToBooleanVectorAlloc(_In_ REFPROPVARIANT prop
ar, __deref_out_ecount(*pcElem) BOOL **pprgf, __out ULONG *pcElem); var, _Outptr_result_buffer_(*pcElem) BOOL **pprgf, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToInt16VectorAlloc(__in REFPROPVARIANT propvar _Check_return_ PSSTDAPI PropVariantToInt16VectorAlloc(_In_ REFPROPVARIANT propva
, __deref_out_ecount(*pcElem) SHORT **pprgn, __out ULONG *pcElem); r, _Outptr_result_buffer_(*pcElem) SHORT **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToUInt16VectorAlloc(__in REFPROPVARIANT propva _Check_return_ PSSTDAPI PropVariantToUInt16VectorAlloc(_In_ REFPROPVARIANT propv
r, __deref_out_ecount(*pcElem) USHORT **pprgn, __out ULONG *pcElem); ar, _Outptr_result_buffer_(*pcElem) USHORT **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToInt32VectorAlloc(__in REFPROPVARIANT propvar _Check_return_ PSSTDAPI PropVariantToInt32VectorAlloc(_In_ REFPROPVARIANT propva
, __deref_out_ecount(*pcElem) LONG **pprgn, __out ULONG *pcElem); r, _Outptr_result_buffer_(*pcElem) LONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToUInt32VectorAlloc(__in REFPROPVARIANT propva _Check_return_ PSSTDAPI PropVariantToUInt32VectorAlloc(_In_ REFPROPVARIANT propv
r, __deref_out_ecount(*pcElem) ULONG **pprgn, __out ULONG *pcElem); ar, _Outptr_result_buffer_(*pcElem) ULONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToInt64VectorAlloc(__in REFPROPVARIANT propvar _Check_return_ PSSTDAPI PropVariantToInt64VectorAlloc(_In_ REFPROPVARIANT propva
, __deref_out_ecount(*pcElem) LONGLONG **pprgn, __out ULONG *pcElem); r, _Outptr_result_buffer_(*pcElem) LONGLONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToUInt64VectorAlloc(__in REFPROPVARIANT propva _Check_return_ PSSTDAPI PropVariantToUInt64VectorAlloc(_In_ REFPROPVARIANT propv
r, __deref_out_ecount(*pcElem) ULONGLONG **pprgn, __out ULONG *pcElem); ar, _Outptr_result_buffer_(*pcElem) ULONGLONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToDoubleVectorAlloc(__in REFPROPVARIANT propva _Check_return_ PSSTDAPI PropVariantToDoubleVectorAlloc(_In_ REFPROPVARIANT propv
r, __deref_out_ecount(*pcElem) DOUBLE **pprgn, __out ULONG *pcElem); ar, _Outptr_result_buffer_(*pcElem) DOUBLE **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToFileTimeVectorAlloc(__in REFPROPVARIANT prop _Check_return_ PSSTDAPI PropVariantToFileTimeVectorAlloc(_In_ REFPROPVARIANT pro
var, __deref_out_ecount(*pcElem) FILETIME **pprgft, __out ULONG *pcElem); pvar, _Outptr_result_buffer_(*pcElem) FILETIME **pprgft, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI PropVariantToStringVectorAlloc(__in REFPROPVARIANT propva _Check_return_ PSSTDAPI PropVariantToStringVectorAlloc(_In_ REFPROPVARIANT propv
r, __deref_out_ecount(*pcElem) PWSTR **pprgsz, __out ULONG *pcElem); ar, _Outptr_result_buffer_(*pcElem) PWSTR **pprgsz, _Out_ ULONG *pcElem);
// Extract a single element from a propvariant. If it is a VT_VECTOR or VT_ARRA Y, returns the element you request. // Extract a single element from a propvariant. If it is a VT_VECTOR or VT_ARRA Y, returns the element you request.
// Otherwise iElem must equal 0 and the function will returns the value. // Otherwise iElem must equal 0 and the function will returns the value.
PSSTDAPI PropVariantGetBooleanElem(__in REFPROPVARIANT propvar, __in ULONG iElem PSSTDAPI PropVariantGetBooleanElem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem
, __out BOOL *pfVal); , _Out_ BOOL *pfVal);
PSSTDAPI PropVariantGetInt16Elem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetInt16Elem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out SHORT *pnVal); _Out_ SHORT *pnVal);
PSSTDAPI PropVariantGetUInt16Elem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetUInt16Elem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out USHORT *pnVal); _Out_ USHORT *pnVal);
PSSTDAPI PropVariantGetInt32Elem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetInt32Elem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out LONG *pnVal); _Out_ LONG *pnVal);
PSSTDAPI PropVariantGetUInt32Elem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetUInt32Elem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out ULONG *pnVal); _Out_ ULONG *pnVal);
PSSTDAPI PropVariantGetInt64Elem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetInt64Elem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out LONGLONG *pnVal); _Out_ LONGLONG *pnVal);
PSSTDAPI PropVariantGetUInt64Elem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetUInt64Elem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out ULONGLONG *pnVal); _Out_ ULONGLONG *pnVal);
PSSTDAPI PropVariantGetDoubleElem(__in REFPROPVARIANT propvar, __in ULONG iElem, PSSTDAPI PropVariantGetDoubleElem(_In_ REFPROPVARIANT propvar, _In_ ULONG iElem,
__out DOUBLE *pnVal); _Out_ DOUBLE *pnVal);
PSSTDAPI PropVariantGetFileTimeElem(__in REFPROPVARIANT propvar, __in ULONG iEle PSSTDAPI PropVariantGetFileTimeElem(_In_ REFPROPVARIANT propvar, _In_ ULONG iEle
m, __out FILETIME *pftVal); m, _Out_ FILETIME *pftVal);
__checkReturn PSSTDAPI PropVariantGetStringElem(__in REFPROPVARIANT propvar, __i _Check_return_ PSSTDAPI PropVariantGetStringElem(_In_ REFPROPVARIANT propvar, _I
n ULONG iElem, __deref_out PWSTR *ppszVal); n_ ULONG iElem, _Outptr_ PWSTR *ppszVal);
#ifdef __cplusplus #ifdef __cplusplus
HRESULT PropVariantGetElem(__in REFPROPVARIANT propvarIn, __in ULONG iElem, __o ut PROPVARIANT *ppropvar); HRESULT PropVariantGetElem(_In_ REFPROPVARIANT propvarIn, _In_ ULONG iElem, _Ou t_ PROPVARIANT *ppropvar);
#endif #endif
// Helpers // Helpers
PSSTDAPI_(void) ClearPropVariantArray(__inout_ecount(cVars) PROPVARIANT *rgPropV PSSTDAPI_(void) ClearPropVariantArray(_Inout_updates_(cVars) PROPVARIANT *rgProp
ar, __in UINT cVars); Var, _In_ UINT cVars);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
typedef enum typedef enum
{ {
PVCU_DEFAULT = 0, PVCU_DEFAULT = 0,
PVCU_SECOND = 1, PVCU_SECOND = 1,
PVCU_MINUTE = 2, PVCU_MINUTE = 2,
PVCU_HOUR = 3, PVCU_HOUR = 3,
PVCU_DAY = 4, PVCU_DAY = 4,
PVCU_MONTH = 5, PVCU_MONTH = 5,
PVCU_YEAR = 6 PVCU_YEAR = 6
} PROPVAR_COMPARE_UNIT; } PROPVAR_COMPARE_UNIT;
enum tagPROPVAR_COMPARE_FLAGS enum tagPROPVAR_COMPARE_FLAGS
{ {
PVCF_DEFAULT = 0x00000000, // When comparing strings, use StrCmpLogical PVCF_DEFAULT = 0x00000000, // When comparing strings, use StrCmpLogical
PVCF_TREATEMPTYASGREATERTHAN = 0x00000001, // Empty/null values are greate r-than non-empty values PVCF_TREATEMPTYASGREATERTHAN = 0x00000001, // Empty/null values are greate r-than non-empty values
PVCF_USESTRCMP = 0x00000002, // When comparing strings, use StrCmp PVCF_USESTRCMP = 0x00000002, // When comparing strings, use StrCmp
PVCF_USESTRCMPC = 0x00000004, // When comparing strings, use StrCmpC PVCF_USESTRCMPC = 0x00000004, // When comparing strings, use StrCmpC
PVCF_USESTRCMPI = 0x00000008, // When comparing strings, use StrCmpI PVCF_USESTRCMPI = 0x00000008, // When comparing strings, use StrCmpI
PVCF_USESTRCMPIC = 0x00000010, // When comparing strings, use StrCmpIC PVCF_USESTRCMPIC = 0x00000010, // When comparing strings, use StrCmpIC
PVCF_DIGITSASNUMBERS_CASESENSITIVE = 0x00000020, // When comparing strings , use CompareStringEx with LOCALE_NAME_USER_DEFAULT and SORT_DIGITSASNUMBERS. T his corresponds to the linguistically correct order for UI lists.
}; };
typedef int PROPVAR_COMPARE_FLAGS; typedef int PROPVAR_COMPARE_FLAGS;
// Comparisons // Comparisons
PSSTDAPI_(int) PropVariantCompareEx(__in REFPROPVARIANT propvar1, __in REFPROPVA RIANT propvar2, __in PROPVAR_COMPARE_UNIT unit, __in PROPVAR_COMPARE_FLAGS flags ); PSSTDAPI_(int) PropVariantCompareEx(_In_ REFPROPVARIANT propvar1, _In_ REFPROPVA RIANT propvar2, _In_ PROPVAR_COMPARE_UNIT unit, _In_ PROPVAR_COMPARE_FLAGS flags );
#ifdef __cplusplus #ifdef __cplusplus
int PropVariantCompare(__in REFPROPVARIANT propvar1, __in REFPROPVARIANT propvar 2); int PropVariantCompare(_In_ REFPROPVARIANT propvar1, _In_ REFPROPVARIANT propvar 2);
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
enum tagPROPVAR_CHANGE_FLAGS enum tagPROPVAR_CHANGE_FLAGS
{ {
PVCHF_DEFAULT = 0x00000000, PVCHF_DEFAULT = 0x00000000,
PVCHF_NOVALUEPROP = 0x00000001, // Maps to VARIANT_NOVALUEPROP f or VariantChangeType PVCHF_NOVALUEPROP = 0x00000001, // Maps to VARIANT_NOVALUEPROP f or VariantChangeType
PVCHF_ALPHABOOL = 0x00000002, // Maps to VARIANT_ALPHABOOL for VariantChangeType PVCHF_ALPHABOOL = 0x00000002, // Maps to VARIANT_ALPHABOOL for VariantChangeType
PVCHF_NOUSEROVERRIDE = 0x00000004, // Maps to VARIANT_NOUSEROVERRID E for VariantChangeType PVCHF_NOUSEROVERRIDE = 0x00000004, // Maps to VARIANT_NOUSEROVERRID E for VariantChangeType
PVCHF_LOCALBOOL = 0x00000008, // Maps to VARIANT_LOCALBOOL for VariantChangeType PVCHF_LOCALBOOL = 0x00000008, // Maps to VARIANT_LOCALBOOL for VariantChangeType
PVCHF_NOHEXSTRING = 0x00000010, // Don't convert a string that l ooks like hexadecimal (0xABCD) to the numerical equivalent PVCHF_NOHEXSTRING = 0x00000010, // Don't convert a string that l ooks like hexadecimal (0xABCD) to the numerical equivalent
}; };
typedef int PROPVAR_CHANGE_FLAGS; typedef int PROPVAR_CHANGE_FLAGS;
// Coersions // Coersions
PSSTDAPI PropVariantChangeType(__out PROPVARIANT *ppropvarDest, __in REFPROPVARI ANT propvarSrc, __in PROPVAR_CHANGE_FLAGS flags, __in VARTYPE vt); PSSTDAPI PropVariantChangeType(_Out_ PROPVARIANT *ppropvarDest, _In_ REFPROPVARI ANT propvarSrc, _In_ PROPVAR_CHANGE_FLAGS flags, _In_ VARTYPE vt);
// Conversions // Conversions
PSSTDAPI PropVariantToVariant(__in const PROPVARIANT *pPropVar, __out VARIANT *p PSSTDAPI PropVariantToVariant(_In_ const PROPVARIANT *pPropVar, _Out_ VARIANT *p
Var); Var);
PSSTDAPI VariantToPropVariant(__in const VARIANT* pVar, __out PROPVARIANT* pProp PSSTDAPI VariantToPropVariant(_In_ const VARIANT* pVar, _Out_ PROPVARIANT* pProp
Var); Var);
// Stg functions // Stg functions
__checkReturn PSSTDAPI StgSerializePropVariant( _Check_return_ PSSTDAPI StgSerializePropVariant(
__in const PROPVARIANT* ppropvar, _In_ const PROPVARIANT* ppropvar,
__deref_out_bcount(*pcb) SERIALIZEDPROPERTYVALUE** ppProp, _Outptr_result_bytebuffer_(*pcb) SERIALIZEDPROPERTYVALUE** ppProp,
__out ULONG* pcb); _Out_ ULONG* pcb);
PSSTDAPI StgDeserializePropVariant( PSSTDAPI StgDeserializePropVariant(
__in const SERIALIZEDPROPERTYVALUE* pprop, _In_ const SERIALIZEDPROPERTYVALUE* pprop,
__in ULONG cbMax, _In_ ULONG cbMax,
__out PROPVARIANT* ppropvar); _Out_ PROPVARIANT* ppropvar);
//================ //================
// //
// Variant Helpers // Variant Helpers
// //
//================ //================
#ifdef __cplusplus #ifdef __cplusplus
BOOL IsVarTypeFloat(__in VARTYPE vt); BOOL IsVarTypeFloat(_In_ VARTYPE vt);
BOOL IsVariantArray(__in REFVARIANT var); BOOL IsVariantArray(_In_ REFVARIANT var);
BOOL IsVariantString(__in REFVARIANT var); BOOL IsVariantString(_In_ REFVARIANT var);
BOOL IsVarTypeNumber(__in VARTYPE vt); BOOL IsVarTypeNumber(_In_ VARTYPE vt);
BOOL IsVarTypeInteger(__in VARTYPE vt); BOOL IsVarTypeInteger(_In_ VARTYPE vt);
#endif #endif
// Initialize a VARIANT // Initialize a VARIANT
PSSTDAPI InitVariantFromResource(__in HINSTANCE hinst, __in UINT id, __out VARIA PSSTDAPI InitVariantFromResource(_In_ HINSTANCE hinst, _In_ UINT id, _Out_ VARIA
NT *pvar); NT *pvar);
PSSTDAPI InitVariantFromBuffer(__in_bcount(cb) const void *pv, __in UINT cb, __o PSSTDAPI InitVariantFromBuffer(_In_reads_bytes_(cb) const void *pv, _In_ UINT cb
ut VARIANT *pvar); , _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromGUIDAsString(__in REFGUID guid, __out VARIANT *pvar); PSSTDAPI InitVariantFromGUIDAsString(_In_ REFGUID guid, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromFileTime(__in const FILETIME *pft, __out VARIANT *pvar); PSSTDAPI InitVariantFromFileTime(_In_ const FILETIME *pft, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromFileTimeArray(__in_ecount_opt(cElems) const FILETIME *pr PSSTDAPI InitVariantFromFileTimeArray(_In_reads_opt_(cElems) const FILETIME *prg
gft, __in ULONG cElems, __out VARIANT *pvar); ft, _In_ ULONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromStrRet(__in STRRET *pstrret, __in PCUITEMID_CHILD pidl, PSSTDAPI InitVariantFromStrRet(_In_ STRRET *pstrret, _In_ PCUITEMID_CHILD pidl,
__out VARIANT *pvar); _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromVariantArrayElem(__in REFVARIANT varIn, __in ULONG iElem PSSTDAPI InitVariantFromVariantArrayElem(_In_ REFVARIANT varIn, _In_ ULONG iElem
, __out VARIANT *pvar); , _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromBooleanArray(__in_ecount(cElems) const BOOL *prgf, __in PSSTDAPI InitVariantFromBooleanArray(_In_reads_(cElems) const BOOL *prgf, _In_ U
ULONG cElems, __out VARIANT *pvar); LONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromInt16Array(__in_ecount(cElems) const SHORT *prgn, __in U PSSTDAPI InitVariantFromInt16Array(_In_reads_(cElems) const SHORT *prgn, _In_ UL
LONG cElems, __out VARIANT *pvar); ONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromUInt16Array(__in_ecount(cElems) const USHORT *prgn, __in PSSTDAPI InitVariantFromUInt16Array(_In_reads_(cElems) const USHORT *prgn, _In_
ULONG cElems, __out VARIANT *pvar); ULONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromInt32Array(__in_ecount(cElems) const LONG *prgn, __in UL PSSTDAPI InitVariantFromInt32Array(_In_reads_(cElems) const LONG *prgn, _In_ ULO
ONG cElems, __out VARIANT *pvar); NG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromUInt32Array(__in_ecount(cElems) const ULONG *prgn, __in PSSTDAPI InitVariantFromUInt32Array(_In_reads_(cElems) const ULONG *prgn, _In_ U
ULONG cElems, __out VARIANT *pvar); LONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromInt64Array(__in_ecount(cElems) const LONGLONG *prgn, __i PSSTDAPI InitVariantFromInt64Array(_In_reads_(cElems) const LONGLONG *prgn, _In_
n ULONG cElems, __out VARIANT *pvar); ULONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromUInt64Array(__in_ecount(cElems) const ULONGLONG *prgn, _ PSSTDAPI InitVariantFromUInt64Array(_In_reads_(cElems) const ULONGLONG *prgn, _I
_in ULONG cElems, __out VARIANT *pvar); n_ ULONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromDoubleArray(__in_ecount(cElems) const DOUBLE *prgn, __in PSSTDAPI InitVariantFromDoubleArray(_In_reads_(cElems) const DOUBLE *prgn, _In_
ULONG cElems, __out VARIANT *pvar); ULONG cElems, _Out_ VARIANT *pvar);
PSSTDAPI InitVariantFromStringArray(__in_ecount(cElems) PCWSTR *prgsz, __in ULON PSSTDAPI InitVariantFromStringArray(_In_reads_(cElems) PCWSTR *prgsz, _In_ ULONG
G cElems, __out VARIANT *pvar); cElems, _Out_ VARIANT *pvar);
#ifdef __cplusplus #ifdef __cplusplus
HRESULT InitVariantFromBoolean(__in BOOL fVal, __out VARIANT *pvar); HRESULT InitVariantFromBoolean(_In_ BOOL fVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromInt16(__in SHORT iVal, __out VARIANT *pvar); HRESULT InitVariantFromInt16(_In_ SHORT iVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromUInt16(__in USHORT uiVal, __out VARIANT *pvar); HRESULT InitVariantFromUInt16(_In_ USHORT uiVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromInt32(__in LONG lVal, __out VARIANT *pvar); HRESULT InitVariantFromInt32(_In_ LONG lVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromUInt32(__in ULONG ulVal, __out VARIANT *pvar); HRESULT InitVariantFromUInt32(_In_ ULONG ulVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromInt64(__in LONGLONG llVal, __out VARIANT *pvar); HRESULT InitVariantFromInt64(_In_ LONGLONG llVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromUInt64(__in ULONGLONG ullVal, __out VARIANT *pvar); HRESULT InitVariantFromUInt64(_In_ ULONGLONG ullVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromDouble(__in DOUBLE dblVal, __out VARIANT *pvar); HRESULT InitVariantFromDouble(_In_ DOUBLE dblVal, _Out_ VARIANT *pvar);
HRESULT InitVariantFromString(__in PCWSTR psz, __out VARIANT *pvar); HRESULT InitVariantFromString(_In_ PCWSTR psz, _Out_ VARIANT *pvar);
HRESULT InitVariantFromDispatch(__in_opt IDispatch* pdisp, __out VARIANT *pvar) HRESULT InitVariantFromDispatch(_In_opt_ IDispatch* pdisp, _Out_ VARIANT *pvar)
; ;
HRESULT InitVariantFromDosDateTime(__in WORD wDate, __in WORD wTime, __out VARI HRESULT InitVariantFromDosDateTime(_In_ WORD wDate, _In_ WORD wTime, _Out_ VARI
ANT *pvar); ANT *pvar);
HRESULT InitVariantFromGUIDAsBuffer(__in REFGUID guid, __out VARIANT *pvar); HRESULT InitVariantFromGUIDAsBuffer(_In_ REFGUID guid, _Out_ VARIANT *pvar);
#endif #endif
// Extract data from a VARIANT // Extract data from a VARIANT
PSSTDAPI_(BOOL) VariantToBooleanWithDefault(__in REFVARIANT varIn, __in BO PSSTDAPI_(BOOL) VariantToBooleanWithDefault(_In_ REFVARIANT varIn, _In_ BO
OL fDefault); OL fDefault);
PSSTDAPI_(SHORT) VariantToInt16WithDefault(__in REFVARIANT varIn, __in SHOR PSSTDAPI_(SHORT) VariantToInt16WithDefault(_In_ REFVARIANT varIn, _In_ SHOR
T iDefault); T iDefault);
PSSTDAPI_(USHORT) VariantToUInt16WithDefault(__in REFVARIANT varIn, __in USH PSSTDAPI_(USHORT) VariantToUInt16WithDefault(_In_ REFVARIANT varIn, _In_ USH
ORT uiDefault); ORT uiDefault);
PSSTDAPI_(LONG) VariantToInt32WithDefault(__in REFVARIANT varIn, __in LONG PSSTDAPI_(LONG) VariantToInt32WithDefault(_In_ REFVARIANT varIn, _In_ LONG
lDefault); lDefault);
PSSTDAPI_(ULONG) VariantToUInt32WithDefault(__in REFVARIANT varIn, __in ULO PSSTDAPI_(ULONG) VariantToUInt32WithDefault(_In_ REFVARIANT varIn, _In_ ULO
NG ulDefault); NG ulDefault);
PSSTDAPI_(LONGLONG) VariantToInt64WithDefault(__in REFVARIANT varIn, __in LONG PSSTDAPI_(LONGLONG) VariantToInt64WithDefault(_In_ REFVARIANT varIn, _In_ LONG
LONG llDefault); LONG llDefault);
PSSTDAPI_(ULONGLONG) VariantToUInt64WithDefault(__in REFVARIANT varIn, __in ULO PSSTDAPI_(ULONGLONG) VariantToUInt64WithDefault(_In_ REFVARIANT varIn, _In_ ULO
NGLONG ullDefault); NGLONG ullDefault);
PSSTDAPI_(DOUBLE) VariantToDoubleWithDefault(__in REFVARIANT varIn, __in DOU PSSTDAPI_(DOUBLE) VariantToDoubleWithDefault(_In_ REFVARIANT varIn, _In_ DOU
BLE dblDefault); BLE dblDefault);
PSSTDAPI_(PCWSTR) VariantToStringWithDefault(__in REFVARIANT varIn, __in_opt PSSTDAPI_(PCWSTR) VariantToStringWithDefault(_In_ REFVARIANT varIn, _In_opt_
LPCWSTR pszDefault); LPCWSTR pszDefault);
PSSTDAPI VariantToBoolean(__in REFVARIANT varIn, __out BOOL *pfRet) PSSTDAPI VariantToBoolean(_In_ REFVARIANT varIn, _Out_ BOOL *pfRet)
; ;
PSSTDAPI VariantToInt16(__in REFVARIANT varIn, __out SHORT *piRet); PSSTDAPI VariantToInt16(_In_ REFVARIANT varIn, _Out_ SHORT *piRet);
PSSTDAPI VariantToUInt16(__in REFVARIANT varIn, __out USHORT *puiRe PSSTDAPI VariantToUInt16(_In_ REFVARIANT varIn, _Out_ USHORT *puiRe
t); t);
PSSTDAPI VariantToInt32(__in REFVARIANT varIn, __out LONG *plRet); PSSTDAPI VariantToInt32(_In_ REFVARIANT varIn, _Out_ LONG *plRet);
PSSTDAPI VariantToUInt32(__in REFVARIANT varIn, __out ULONG *pulRet PSSTDAPI VariantToUInt32(_In_ REFVARIANT varIn, _Out_ ULONG *pulRet
); );
PSSTDAPI VariantToInt64(__in REFVARIANT varIn, __out LONGLONG *pllR PSSTDAPI VariantToInt64(_In_ REFVARIANT varIn, _Out_ LONGLONG *pllR
et); et);
PSSTDAPI VariantToUInt64(__in REFVARIANT varIn, __out ULONGLONG *pu PSSTDAPI VariantToUInt64(_In_ REFVARIANT varIn, _Out_ ULONGLONG *pu
llRet); llRet);
PSSTDAPI VariantToDouble(__in REFVARIANT varIn, __out DOUBLE *pdblR PSSTDAPI VariantToDouble(_In_ REFVARIANT varIn, _Out_ DOUBLE *pdblR
et); et);
PSSTDAPI VariantToBuffer(__in REFVARIANT varIn, __out_bcount(cb) vo PSSTDAPI VariantToBuffer(_In_ REFVARIANT varIn, _Out_writes_bytes_(
id *pv, __in UINT cb); cb) void *pv, _In_ UINT cb);
PSSTDAPI VariantToGUID(__in REFVARIANT varIn, __out GUID *pguid); PSSTDAPI VariantToGUID(_In_ REFVARIANT varIn, _Out_ GUID *pguid);
PSSTDAPI VariantToString(__in REFVARIANT varIn, __out_ecount(cchBuf PSSTDAPI VariantToString(_In_ REFVARIANT varIn, _Out_writes_(cchBuf
) PWSTR pszBuf, __in UINT cchBuf); ) PWSTR pszBuf, _In_ UINT cchBuf);
__checkReturn PSSTDAPI VariantToStringAlloc(__in REFVARIANT varIn, __deref_out P _Check_return_ PSSTDAPI VariantToStringAlloc(_In_ REFVARIANT varIn, _Outptr_resu
WSTR *ppszBuf); lt_nullonfailure_ PWSTR *ppszBuf);
PSSTDAPI VariantToDosDateTime(__in REFVARIANT varIn, __out WORD *pw PSSTDAPI VariantToDosDateTime(_In_ REFVARIANT varIn, _Out_ WORD *pw
Date, __out WORD *pwTime); Date, _Out_ WORD *pwTime);
__checkReturn PSSTDAPI VariantToStrRet(__in REFVARIANT varIn, __out STRRET *pstr _Check_return_ PSSTDAPI VariantToStrRet(_In_ REFVARIANT varIn, _Out_ STRRET *pst
ret); rret);
PSSTDAPI VariantToFileTime(__in REFVARIANT varIn, __in PSTIME_FLAGS PSSTDAPI VariantToFileTime(_In_ REFVARIANT varIn, _In_ PSTIME_FLAGS
stfOut, __out FILETIME* pftOut); stfOut, _Out_ FILETIME* pftOut);
// Get the element count. Returns number of elements for values of type VT_ARRA Y; returns 1 otherwise. // Get the element count. Returns number of elements for values of type VT_ARRA Y; returns 1 otherwise.
PSSTDAPI_(ULONG) VariantGetElementCount(__in REFVARIANT varIn); PSSTDAPI_(ULONG) VariantGetElementCount(_In_ REFVARIANT varIn);
// Extract data from a VARIANT into a vector // Extract data from a VARIANT into a vector
PSSTDAPI VariantToBooleanArray(__in REFVARIANT var, __out_ecount_part(crgn, *pcE PSSTDAPI VariantToBooleanArray(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcEle
lem) BOOL *prgf, __in ULONG crgn, __out ULONG *pcElem); m) BOOL *prgf, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToInt16Array(__in REFVARIANT var, __out_ecount_part(crgn, *pcEle PSSTDAPI VariantToInt16Array(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem)
m) SHORT *prgn, __in ULONG crgn, __out ULONG *pcElem); SHORT *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToUInt16Array(__in REFVARIANT var, __out_ecount_part(crgn, *pcEl PSSTDAPI VariantToUInt16Array(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem
em) USHORT *prgn, __in ULONG crgn, __out ULONG *pcElem); ) USHORT *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToInt32Array(__in REFVARIANT var, __out_ecount_part(crgn, *pcEle PSSTDAPI VariantToInt32Array(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem)
m) LONG *prgn, __in ULONG crgn, __out ULONG *pcElem); LONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToUInt32Array(__in REFVARIANT var, __out_ecount_part(crgn, *pcEl PSSTDAPI VariantToUInt32Array(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem
em) ULONG *prgn, __in ULONG crgn, __out ULONG *pcElem); ) ULONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToInt64Array(__in REFVARIANT var, __out_ecount_part(crgn, *pcEle PSSTDAPI VariantToInt64Array(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem)
m) LONGLONG *prgn, __in ULONG crgn, __out ULONG *pcElem); LONGLONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToUInt64Array(__in REFVARIANT var, __out_ecount_part(crgn, *pcEl PSSTDAPI VariantToUInt64Array(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem
em) ULONGLONG *prgn, __in ULONG crgn, __out ULONG *pcElem); ) ULONGLONG *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
PSSTDAPI VariantToDoubleArray(__in REFVARIANT var, __out_ecount_part(crgn, *pcEl PSSTDAPI VariantToDoubleArray(_In_ REFVARIANT var, _Out_writes_to_(crgn, *pcElem
em) DOUBLE *prgn, __in ULONG crgn, __out ULONG *pcElem); ) DOUBLE *prgn, _In_ ULONG crgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToStringArray(__in REFVARIANT var, __out_ecount_pa _Check_return_ PSSTDAPI VariantToStringArray(_In_ REFVARIANT var, _Out_writes_to
rt(crgsz, *pcElem) PWSTR *prgsz, __in ULONG crgsz, __out ULONG *pcElem); _(crgsz, *pcElem) PWSTR *prgsz, _In_ ULONG crgsz, _Out_ ULONG *pcElem);
// Extract data from a VARIANT into a newly allocated vector (free with CoTaskMe mFree) // Extract data from a VARIANT into a newly allocated vector (free with CoTaskMe mFree)
__checkReturn PSSTDAPI VariantToBooleanArrayAlloc(__in REFVARIANT var, __deref_o _Check_return_ PSSTDAPI VariantToBooleanArrayAlloc(_In_ REFVARIANT var, _Outptr_
ut_ecount(*pcElem) BOOL **pprgf, __out ULONG *pcElem); result_buffer_(*pcElem) BOOL **pprgf, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToInt16ArrayAlloc(__in REFVARIANT var, __deref_out _Check_return_ PSSTDAPI VariantToInt16ArrayAlloc(_In_ REFVARIANT var, _Outptr_re
_ecount(*pcElem) SHORT **pprgn, __out ULONG *pcElem); sult_buffer_(*pcElem) SHORT **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToUInt16ArrayAlloc(__in REFVARIANT var, __deref_ou _Check_return_ PSSTDAPI VariantToUInt16ArrayAlloc(_In_ REFVARIANT var, _Outptr_r
t_ecount(*pcElem) USHORT **pprgn, __out ULONG *pcElem); esult_buffer_(*pcElem) USHORT **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToInt32ArrayAlloc(__in REFVARIANT var, __deref_out _Check_return_ PSSTDAPI VariantToInt32ArrayAlloc(_In_ REFVARIANT var, _Outptr_re
_ecount(*pcElem) LONG **pprgn, __out ULONG *pcElem); sult_buffer_(*pcElem) LONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToUInt32ArrayAlloc(__in REFVARIANT var, __deref_ou _Check_return_ PSSTDAPI VariantToUInt32ArrayAlloc(_In_ REFVARIANT var, _Outptr_r
t_ecount(*pcElem) ULONG **pprgn, __out ULONG *pcElem); esult_buffer_(*pcElem) ULONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToInt64ArrayAlloc(__in REFVARIANT var, __deref_out _Check_return_ PSSTDAPI VariantToInt64ArrayAlloc(_In_ REFVARIANT var, _Outptr_re
_ecount(*pcElem) LONGLONG **pprgn, __out ULONG *pcElem); sult_buffer_(*pcElem) LONGLONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToUInt64ArrayAlloc(__in REFVARIANT var, __deref_ou _Check_return_ PSSTDAPI VariantToUInt64ArrayAlloc(_In_ REFVARIANT var, _Outptr_r
t_ecount(*pcElem) ULONGLONG **pprgn, __out ULONG *pcElem); esult_buffer_(*pcElem) ULONGLONG **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToDoubleArrayAlloc(__in REFVARIANT var, __deref_ou _Check_return_ PSSTDAPI VariantToDoubleArrayAlloc(_In_ REFVARIANT var, _Outptr_r
t_ecount(*pcElem) DOUBLE **pprgn, __out ULONG *pcElem); esult_buffer_(*pcElem) DOUBLE **pprgn, _Out_ ULONG *pcElem);
__checkReturn PSSTDAPI VariantToStringArrayAlloc(__in REFVARIANT var, __deref_ou _Check_return_ PSSTDAPI VariantToStringArrayAlloc(_In_ REFVARIANT var, _Outptr_r
t_ecount(*pcElem) PWSTR **pprgsz, __out ULONG *pcElem); esult_buffer_(*pcElem) PWSTR **pprgsz, _Out_ ULONG *pcElem);
// Get a single element of a VARIANT. If it is type VT_ARRAY, returns a the req uested element. Otherwise // Get a single element of a VARIANT. If it is type VT_ARRAY, returns a the req uested element. Otherwise
// iElem must equal 0 and the function returns the value. // iElem must equal 0 and the function returns the value.
PSSTDAPI VariantGetBooleanElem(__in REFVARIANT var, __in ULONG iElem, __out BOOL PSSTDAPI VariantGetBooleanElem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ BOOL
*pfVal); *pfVal);
PSSTDAPI VariantGetInt16Elem(__in REFVARIANT var, __in ULONG iElem, __out SHORT PSSTDAPI VariantGetInt16Elem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ SHORT
*pnVal); *pnVal);
PSSTDAPI VariantGetUInt16Elem(__in REFVARIANT var, __in ULONG iElem, __out USHOR PSSTDAPI VariantGetUInt16Elem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ USHOR
T *pnVal); T *pnVal);
PSSTDAPI VariantGetInt32Elem(__in REFVARIANT var, __in ULONG iElem, __out LONG * PSSTDAPI VariantGetInt32Elem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ LONG *
pnVal); pnVal);
PSSTDAPI VariantGetUInt32Elem(__in REFVARIANT var, __in ULONG iElem, __out ULONG PSSTDAPI VariantGetUInt32Elem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ ULONG
*pnVal); *pnVal);
PSSTDAPI VariantGetInt64Elem(__in REFVARIANT var, __in ULONG iElem, __out LONGLO PSSTDAPI VariantGetInt64Elem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ LONGLO
NG *pnVal); NG *pnVal);
PSSTDAPI VariantGetUInt64Elem(__in REFVARIANT var, __in ULONG iElem, __out ULONG PSSTDAPI VariantGetUInt64Elem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ ULONG
LONG *pnVal); LONG *pnVal);
PSSTDAPI VariantGetDoubleElem(__in REFVARIANT var, __in ULONG iElem, __out DOUBL PSSTDAPI VariantGetDoubleElem(_In_ REFVARIANT var, _In_ ULONG iElem, _Out_ DOUBL
E *pnVal); E *pnVal);
__checkReturn PSSTDAPI VariantGetStringElem(__in REFVARIANT var, __in ULONG iEle _Check_return_ PSSTDAPI VariantGetStringElem(_In_ REFVARIANT var, _In_ ULONG iEl
m, __deref_out PWSTR *ppszVal); em, _Outptr_ PWSTR *ppszVal);
#ifdef __cplusplus #ifdef __cplusplus
HRESULT VariantGetElem(__in REFVARIANT varIn, __in ULONG iElem, __out VARIANT * pvar); HRESULT VariantGetElem(_In_ REFVARIANT varIn, _In_ ULONG iElem, _Out_ VARIANT * pvar);
#endif #endif
// Helpers // Helpers
PSSTDAPI_(void) ClearVariantArray(__inout_ecount(cvars) VARIANT *pvars, __in UIN PSSTDAPI_(void) ClearVariantArray(_Inout_updates_(cvars) VARIANT *pvars, _In_ UI
T cvars); NT cvars);
PSSTDAPI_(int) VariantCompare(__in REFVARIANT var1, __in REFVARIANT var2); PSSTDAPI_(int) VariantCompare(_In_ REFVARIANT var1, _In_ REFVARIANT var2);
//=========================== //===========================
// //
// Property-specific notions // Property-specific notions
// //
//=========================== //===========================
// The progress bar property control uses a specially formatted PROPVARIANT to c onvey the look of the progress bar // The progress bar property control uses a specially formatted PROPVARIANT to c onvey the look of the progress bar
// propvar.vt = VT_UI4 // propvar.vt = VT_UI4
// propvar.caul.pElems[0] = current progress // propvar.caul.pElems[0] = current progress
skipping to change at line 346 skipping to change at line 376
typedef enum DRAWPROGRESSFLAGS typedef enum DRAWPROGRESSFLAGS
{ {
DPF_NONE = 0x0, // No progress flags. DPF_NONE = 0x0, // No progress flags.
DPF_MARQUEE = 0x1, // The progress bar should draw in marquee m ode. DPF_MARQUEE = 0x1, // The progress bar should draw in marquee m ode.
DPF_MARQUEE_COMPLETE = 0x2, // The marquee format progress bar has compl eted. DPF_MARQUEE_COMPLETE = 0x2, // The marquee format progress bar has compl eted.
DPF_ERROR = 0x4, // The progress bar should be drawn in the e rror state. DPF_ERROR = 0x4, // The progress bar should be drawn in the e rror state.
DPF_WARNING = 0x8, // The progress bar should be drawn in the w arning state. DPF_WARNING = 0x8, // The progress bar should be drawn in the w arning state.
DPF_STOPPED = 0x10, // The progress bar is stopped. DPF_STOPPED = 0x10, // The progress bar is stopped.
} DRAWPROGRESSFLAGS; } DRAWPROGRESSFLAGS;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
//================ //================
// //
// Inline Helpers // Inline Helpers
// //
//================ //================
#if defined(__cplusplus) && !defined(NO_PROPVAR_INLINES) #if defined(__cplusplus) && !defined(CINTERFACE)
inline HRESULT InitPropVariantFromBoolean(__in BOOL fVal, __out PROPVARIANT *ppr
opvar) #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
inline HRESULT InitPropVariantFromBoolean(_In_ BOOL fVal, _Out_ PROPVARIANT *ppr
opvar)
{ {
ppropvar->vt = VT_BOOL; ppropvar->vt = VT_BOOL;
ppropvar->boolVal = fVal ? VARIANT_TRUE : VARIANT_FALSE; ppropvar->boolVal = fVal ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromInt16(__in SHORT nVal, __out PROPVARIANT *ppro pvar) inline HRESULT InitPropVariantFromInt16(_In_ SHORT nVal, _Out_ PROPVARIANT *ppro pvar)
{ {
ppropvar->vt = VT_I2; ppropvar->vt = VT_I2;
ppropvar->iVal = nVal; ppropvar->iVal = nVal;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromUInt16(__in USHORT uiVal, __out PROPVARIANT *p propvar) inline HRESULT InitPropVariantFromUInt16(_In_ USHORT uiVal, _Out_ PROPVARIANT *p propvar)
{ {
ppropvar->vt = VT_UI2; ppropvar->vt = VT_UI2;
ppropvar->uiVal = uiVal; ppropvar->uiVal = uiVal;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromInt32(__in LONG lVal, __out PROPVARIANT *pprop var) inline HRESULT InitPropVariantFromInt32(_In_ LONG lVal, _Out_ PROPVARIANT *pprop var)
{ {
ppropvar->vt = VT_I4; ppropvar->vt = VT_I4;
ppropvar->lVal = lVal; ppropvar->lVal = lVal;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromUInt32(__in ULONG ulVal, __out PROPVARIANT *pp ropvar) inline HRESULT InitPropVariantFromUInt32(_In_ ULONG ulVal, _Out_ PROPVARIANT *pp ropvar)
{ {
ppropvar->vt = VT_UI4; ppropvar->vt = VT_UI4;
ppropvar->ulVal = ulVal; ppropvar->ulVal = ulVal;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromInt64(__in LONGLONG llVal, __out PROPVARIANT * ppropvar) inline HRESULT InitPropVariantFromInt64(_In_ LONGLONG llVal, _Out_ PROPVARIANT * ppropvar)
{ {
ppropvar->vt = VT_I8; ppropvar->vt = VT_I8;
ppropvar->hVal.QuadPart = llVal; ppropvar->hVal.QuadPart = llVal;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromUInt64(__in ULONGLONG ullVal, __out PROPVARIAN T *ppropvar) inline HRESULT InitPropVariantFromUInt64(_In_ ULONGLONG ullVal, _Out_ PROPVARIAN T *ppropvar)
{ {
ppropvar->vt = VT_UI8; ppropvar->vt = VT_UI8;
ppropvar->uhVal.QuadPart = ullVal; ppropvar->uhVal.QuadPart = ullVal;
return S_OK; return S_OK;
} }
inline HRESULT InitPropVariantFromDouble(__in DOUBLE dblVal, __out PROPVARIANT * ppropvar) inline HRESULT InitPropVariantFromDouble(_In_ DOUBLE dblVal, _Out_ PROPVARIANT * ppropvar)
{ {
ppropvar->vt = VT_R8; ppropvar->vt = VT_R8;
ppropvar->dblVal = dblVal; ppropvar->dblVal = dblVal;
return S_OK; return S_OK;
} }
// Creates a VT_LPWSTR propvariant. // Creates a VT_LPWSTR propvariant.
inline HRESULT InitPropVariantFromString(__in PCWSTR psz, __out PROPVARIANT *ppr opvar) inline HRESULT InitPropVariantFromString(_In_ PCWSTR psz, _Out_ PROPVARIANT *ppr opvar)
{ {
ppropvar->vt = VT_LPWSTR; ppropvar->vt = VT_LPWSTR;
HRESULT hr = SHStrDupW(psz, &ppropvar->pwszVal); HRESULT hr = SHStrDupW(psz, &ppropvar->pwszVal);
if (FAILED(hr)) if (FAILED(hr))
{ {
PropVariantInit(ppropvar); PropVariantInit(ppropvar);
} }
return hr; return hr;
} }
// Creates a VT_VECTOR | VT_UI1 propvariant. // Creates a VT_VECTOR | VT_UI1 propvariant.
inline HRESULT InitPropVariantFromGUIDAsBuffer(__in REFGUID guid, __out PROPVARI ANT *ppropvar) inline HRESULT InitPropVariantFromGUIDAsBuffer(_In_ REFGUID guid, _Out_ PROPVARI ANT *ppropvar)
{ {
return InitPropVariantFromBuffer(&guid, sizeof(GUID), ppropvar); return InitPropVariantFromBuffer(&guid, sizeof(GUID), ppropvar);
} }
inline BOOL IsPropVariantVector(__in REFPROPVARIANT propvar) inline BOOL IsPropVariantVector(_In_ REFPROPVARIANT propvar)
{ {
return (propvar.vt & (VT_ARRAY | VT_VECTOR)); return (propvar.vt & (VT_ARRAY | VT_VECTOR));
} }
// If TRUE, propvar contains a unicode string. Use PropVariantToStringWithDefau lt(propvar, NULL) to retrieve it. // If TRUE, propvar contains a unicode string. Use PropVariantToStringWithDefau lt(propvar, NULL) to retrieve it.
inline BOOL IsPropVariantString(__in REFPROPVARIANT propvar) inline BOOL IsPropVariantString(_In_ REFPROPVARIANT propvar)
{ {
return (PropVariantToStringWithDefault(propvar, NULL) != NULL); return (PropVariantToStringWithDefault(propvar, NULL) != NULL);
} }
// Handles int instead of LONG // Handles int instead of LONG
inline HRESULT PropVariantToInt32(__in REFPROPVARIANT propvarIn, __out int *piRe t) inline HRESULT PropVariantToInt32(_In_ REFPROPVARIANT propvarIn, _Out_ int *piRe t)
{ {
return PropVariantToInt32(propvarIn, (LONG*)piRet); return PropVariantToInt32(propvarIn, (LONG*)piRet);
} }
// Handles UINT instead of ULONG // Handles UINT instead of ULONG
inline HRESULT PropVariantToUInt32(__in REFPROPVARIANT propvarIn, __out UINT *pi Ret) inline HRESULT PropVariantToUInt32(_In_ REFPROPVARIANT propvarIn, _Out_ UINT *pi Ret)
{ {
return PropVariantToUInt32(propvarIn, (ULONG*)piRet); return PropVariantToUInt32(propvarIn, (ULONG*)piRet);
} }
inline HRESULT PropVariantToCLSID(__in REFPROPVARIANT propvarIn, __out CLSID *pc lsid) inline HRESULT PropVariantToCLSID(_In_ REFPROPVARIANT propvarIn, _Out_ CLSID *pc lsid)
{ {
return PropVariantToGUID(propvarIn, (GUID*)pclsid); return PropVariantToGUID(propvarIn, (GUID*)pclsid);
} }
inline int PropVariantCompare(__in REFPROPVARIANT propvar1, __in REFPROPVARIANT #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
propvar2) #pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
inline int PropVariantCompare(_In_ REFPROPVARIANT propvar1, _In_ REFPROPVARIANT
propvar2)
{ {
return PropVariantCompareEx(propvar1, propvar2, PVCU_DEFAULT, PVCF_DEFAULT); return PropVariantCompareEx(propvar1, propvar2, PVCU_DEFAULT, PVCF_DEFAULT);
} }
inline HRESULT PropVariantGetElem(__in REFPROPVARIANT propvarIn, __in ULONG iEle #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
m, __out PROPVARIANT *ppropvar) #pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
inline HRESULT PropVariantGetElem(_In_ REFPROPVARIANT propvarIn, _In_ ULONG iEle
m, _Out_ PROPVARIANT *ppropvar)
{ {
return InitPropVariantFromPropVariantVectorElem(propvarIn, iElem, ppropvar); return InitPropVariantFromPropVariantVectorElem(propvarIn, iElem, ppropvar);
} }
inline HRESULT InitVariantFromBoolean(__in BOOL fVal, __out VARIANT *pvar) inline HRESULT InitVariantFromBoolean(_In_ BOOL fVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_BOOL; pvar->vt = VT_BOOL;
pvar->boolVal = fVal ? VARIANT_TRUE : VARIANT_FALSE; pvar->boolVal = fVal ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromInt16(__in short iVal, __out VARIANT *pvar) inline HRESULT InitVariantFromInt16(_In_ short iVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_I2; pvar->vt = VT_I2;
pvar->iVal = iVal; pvar->iVal = iVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromUInt16(__in USHORT uiVal, __out VARIANT *pvar) inline HRESULT InitVariantFromUInt16(_In_ USHORT uiVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_UI2; pvar->vt = VT_UI2;
pvar->uiVal = uiVal; pvar->uiVal = uiVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromInt32(__in LONG lVal, __out VARIANT *pvar) inline HRESULT InitVariantFromInt32(_In_ LONG lVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_I4; pvar->vt = VT_I4;
pvar->lVal = lVal; pvar->lVal = lVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromUInt32(__in ULONG ulVal, __out VARIANT *pvar) inline HRESULT InitVariantFromUInt32(_In_ ULONG ulVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_UI4; pvar->vt = VT_UI4;
pvar->ulVal = ulVal; pvar->ulVal = ulVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromInt64(__in LONGLONG llVal, __out VARIANT *pvar) inline HRESULT InitVariantFromInt64(_In_ LONGLONG llVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_I8; pvar->vt = VT_I8;
pvar->llVal = llVal; pvar->llVal = llVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromUInt64(__in ULONGLONG ullVal, __out VARIANT *pvar) inline HRESULT InitVariantFromUInt64(_In_ ULONGLONG ullVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_UI8; pvar->vt = VT_UI8;
pvar->ullVal = ullVal; pvar->ullVal = ullVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromDouble(__in DOUBLE dblVal, __out VARIANT *pvar) inline HRESULT InitVariantFromDouble(_In_ DOUBLE dblVal, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_R8; pvar->vt = VT_R8;
pvar->dblVal = dblVal; pvar->dblVal = dblVal;
return S_OK; return S_OK;
} }
inline HRESULT InitVariantFromString(__in PCWSTR psz, __out VARIANT *pvar) inline HRESULT InitVariantFromString(_In_ PCWSTR psz, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_BSTR; pvar->vt = VT_BSTR;
pvar->bstrVal = SysAllocString(psz); pvar->bstrVal = SysAllocString(psz);
HRESULT hr = pvar->bstrVal ? S_OK : (psz ? E_OUTOFMEMORY : E_INVALIDARG); HRESULT hr = pvar->bstrVal ? S_OK : (psz ? E_OUTOFMEMORY : E_INVALIDARG);
if (FAILED(hr)) if (FAILED(hr))
{ {
VariantInit(pvar); VariantInit(pvar);
} }
return hr; return hr;
} }
inline HRESULT InitVariantFromDispatch(__in_opt IDispatch* pdisp, __out VARIANT *pvar) inline HRESULT InitVariantFromDispatch(_In_opt_ IDispatch* pdisp, _Out_ VARIANT *pvar)
{ {
pvar->vt = VT_DISPATCH; pvar->vt = VT_DISPATCH;
pvar->pdispVal = pdisp; pvar->pdispVal = pdisp;
if (pvar->pdispVal) if (pvar->pdispVal)
{ {
(pvar->pdispVal)->AddRef(); (pvar->pdispVal)->AddRef();
} }
return S_OK; return S_OK;
} }
// Creates a VT_DATE variant // Creates a VT_DATE variant
inline HRESULT InitVariantFromDosDateTime(__in WORD wDate, __in WORD wTime, __ou t VARIANT *pvar) inline HRESULT InitVariantFromDosDateTime(_In_ WORD wDate, _In_ WORD wTime, _Out _ VARIANT *pvar)
{ {
pvar->vt = VT_DATE; pvar->vt = VT_DATE;
return DosDateTimeToVariantTime(wDate, wTime, &pvar->date) ? S_OK : S_FALSE; return DosDateTimeToVariantTime(wDate, wTime, &pvar->date) ? S_OK : S_FALSE;
} }
inline BOOL IsVarTypeFloat(__in VARTYPE vt) inline BOOL IsVarTypeFloat(_In_ VARTYPE vt)
{ {
return (vt == VT_R4 || vt == VT_R8); return (vt == VT_R4 || vt == VT_R8);
} }
inline BOOL IsVariantArray(__in REFVARIANT var) inline BOOL IsVariantArray(_In_ REFVARIANT var)
{ {
return (var.vt & VT_ARRAY); return (var.vt & VT_ARRAY);
} }
// if TRUE, you can use VariantToStringCast to obtain the string pointer // if TRUE, you can use VariantToStringCast to obtain the string pointer
inline BOOL IsVariantString(__in REFVARIANT var) inline BOOL IsVariantString(_In_ REFVARIANT var)
{ {
return (VariantToStringWithDefault(var, NULL) != NULL); return (VariantToStringWithDefault(var, NULL) != NULL);
} }
inline BOOL IsVarTypeNumber(__in VARTYPE vt) inline BOOL IsVarTypeNumber(_In_ VARTYPE vt)
{ {
return IsVarTypeInteger(vt) || IsVarTypeFloat(vt); return IsVarTypeInteger(vt) || IsVarTypeFloat(vt);
} }
inline BOOL IsVarTypeSignedInteger(__in VARTYPE vt) inline BOOL IsVarTypeSignedInteger(_In_ VARTYPE vt)
{ {
BOOL fRet = FALSE; BOOL fRet = FALSE;
switch (vt) switch (vt)
{ {
case VT_I1: case VT_I1:
case VT_I2: case VT_I2:
case VT_I4: case VT_I4:
case VT_I8: case VT_I8:
fRet = TRUE; fRet = TRUE;
} }
return fRet; return fRet;
} }
inline BOOL IsVarTypeUnsignedInteger(__in VARTYPE vt) inline BOOL IsVarTypeUnsignedInteger(_In_ VARTYPE vt)
{ {
BOOL fRet = FALSE; BOOL fRet = FALSE;
switch (vt) switch (vt)
{ {
case VT_UI1: case VT_UI1:
case VT_UI2: case VT_UI2:
case VT_UI4: case VT_UI4:
case VT_UI8: case VT_UI8:
fRet = TRUE; fRet = TRUE;
} }
return fRet; return fRet;
} }
inline BOOL IsVarTypeInteger(__in VARTYPE vt) inline BOOL IsVarTypeInteger(_In_ VARTYPE vt)
{ {
return IsVarTypeSignedInteger(vt) || IsVarTypeUnsignedInteger(vt); return IsVarTypeSignedInteger(vt) || IsVarTypeUnsignedInteger(vt);
} }
// Creates a VT_ARRAY | VT_UI1 variant. // Creates a VT_ARRAY | VT_UI1 variant.
inline HRESULT InitVariantFromGUIDAsBuffer(__in REFGUID guid, __out VARIANT *pva r) inline HRESULT InitVariantFromGUIDAsBuffer(_In_ REFGUID guid, _Out_ VARIANT *pva r)
{ {
return InitVariantFromBuffer(&guid, sizeof(GUID), pvar); return InitVariantFromBuffer(&guid, sizeof(GUID), pvar);
} }
// Handles int instead of LONG // Handles int instead of LONG
inline HRESULT VariantToInt32(__in REFVARIANT varIn, __out int *piRet) inline HRESULT VariantToInt32(_In_ REFVARIANT varIn, _Out_ int *piRet)
{ {
return VariantToInt32(varIn, (LONG*)piRet); return VariantToInt32(varIn, (LONG*)piRet);
} }
// Handles UINT instead of ULONG // Handles UINT instead of ULONG
inline HRESULT VariantToUInt32(__in REFVARIANT varIn, __out UINT *piRet) inline HRESULT VariantToUInt32(_In_ REFVARIANT varIn, _Out_ UINT *piRet)
{ {
return VariantToUInt32(varIn, (ULONG*)piRet); return VariantToUInt32(varIn, (ULONG*)piRet);
} }
inline HRESULT VariantGetElem(__in REFVARIANT varIn, __in ULONG iElem, __out VAR IANT *pvar) inline HRESULT VariantGetElem(_In_ REFVARIANT varIn, _In_ ULONG iElem, _Out_ VAR IANT *pvar)
{ {
return InitVariantFromVariantArrayElem(varIn, iElem, pvar); return InitVariantFromVariantArrayElem(varIn, iElem, pvar);
} }
#endif // __cplusplus
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // __cplusplus && !CINTERFACE
 End of changes. 76 change blocks. 
383 lines changed or deleted 432 lines changed or added

This html diff was produced by rfcdiff 1.41.