1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_COMMON_IMPORTER_PSTORE_DECLARATIONS_H_ 6 #define CHROME_COMMON_IMPORTER_PSTORE_DECLARATIONS_H_ 7 8 #ifdef __PSTORE_H__ 9 #error Should not include pstore.h and this file simultaneously. 10 #endif 11 12 #include <ole2.h> 13 14 // pstore.h is no longer shipped in the Windows 8 SDK. Define a minimal set 15 // here. 16 17 // These types are referenced in interfaces we use, but our code does not use 18 // refer to these types, so simply make them opaque. 19 class IEnumPStoreTypes; 20 struct PST_ACCESSRULESET; 21 struct PST_PROMPTINFO; 22 struct PST_PROVIDERINFO; 23 struct PST_TYPEINFO; 24 25 EXTERN_C const IID IID_IPStore; 26 EXTERN_C const IID IID_IEnumPStoreItems; 27 28 typedef DWORD PST_KEY; 29 typedef DWORD PST_ACCESSMODE; 30 #define PST_E_OK _HRESULT_TYPEDEF_(0x00000000L) 31 32 interface IEnumPStoreItems : public IUnknown 33 { 34 public: 35 virtual HRESULT STDMETHODCALLTYPE Next( 36 DWORD celt, 37 LPWSTR __RPC_FAR *rgelt, 38 DWORD __RPC_FAR *pceltFetched) = 0; 39 40 virtual HRESULT STDMETHODCALLTYPE Skip(DWORD celt) = 0; 41 42 virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0; 43 44 virtual HRESULT STDMETHODCALLTYPE Clone( 45 IEnumPStoreItems __RPC_FAR *__RPC_FAR *ppenum) = 0; 46 }; 47 48 interface IPStore : public IUnknown 49 { 50 public: 51 virtual HRESULT STDMETHODCALLTYPE GetInfo( 52 PST_PROVIDERINFO* __RPC_FAR *ppProperties) = 0; 53 54 virtual HRESULT STDMETHODCALLTYPE GetProvParam( 55 DWORD dwParam, 56 DWORD __RPC_FAR *pcbData, 57 BYTE __RPC_FAR *__RPC_FAR *ppbData, 58 DWORD dwFlags) = 0; 59 60 virtual HRESULT STDMETHODCALLTYPE SetProvParam( 61 DWORD dwParam, 62 DWORD cbData, 63 BYTE __RPC_FAR *pbData, 64 DWORD dwFlags) = 0; 65 66 virtual HRESULT STDMETHODCALLTYPE CreateType( 67 PST_KEY Key, 68 const GUID __RPC_FAR *pType, 69 PST_TYPEINFO* pInfo, 70 DWORD dwFlags) = 0; 71 72 virtual HRESULT STDMETHODCALLTYPE GetTypeInfo( 73 PST_KEY Key, 74 const GUID __RPC_FAR *pType, 75 PST_TYPEINFO* __RPC_FAR *ppInfo, 76 DWORD dwFlags) = 0; 77 78 virtual HRESULT STDMETHODCALLTYPE DeleteType( 79 PST_KEY Key, 80 const GUID __RPC_FAR *pType, 81 DWORD dwFlags) = 0; 82 83 virtual HRESULT STDMETHODCALLTYPE CreateSubtype( 84 PST_KEY Key, 85 const GUID __RPC_FAR *pType, 86 const GUID __RPC_FAR *pSubtype, 87 PST_TYPEINFO* pInfo, 88 PST_ACCESSRULESET* pRules, 89 DWORD dwFlags) = 0; 90 91 virtual HRESULT STDMETHODCALLTYPE GetSubtypeInfo( 92 PST_KEY Key, 93 const GUID __RPC_FAR *pType, 94 const GUID __RPC_FAR *pSubtype, 95 PST_TYPEINFO* __RPC_FAR *ppInfo, 96 DWORD dwFlags) = 0; 97 98 virtual HRESULT STDMETHODCALLTYPE DeleteSubtype( 99 PST_KEY Key, 100 const GUID __RPC_FAR *pType, 101 const GUID __RPC_FAR *pSubtype, 102 DWORD dwFlags) = 0; 103 104 virtual HRESULT STDMETHODCALLTYPE ReadAccessRuleset( 105 PST_KEY Key, 106 const GUID __RPC_FAR *pType, 107 const GUID __RPC_FAR *pSubtype, 108 PST_ACCESSRULESET* __RPC_FAR *ppRules, 109 DWORD dwFlags) = 0; 110 111 virtual HRESULT STDMETHODCALLTYPE WriteAccessRuleset( 112 PST_KEY Key, 113 const GUID __RPC_FAR *pType, 114 const GUID __RPC_FAR *pSubtype, 115 PST_ACCESSRULESET* pRules, 116 DWORD dwFlags) = 0; 117 118 virtual HRESULT STDMETHODCALLTYPE EnumTypes( 119 PST_KEY Key, 120 DWORD dwFlags, 121 IEnumPStoreTypes __RPC_FAR *__RPC_FAR *ppenum) = 0; 122 123 virtual HRESULT STDMETHODCALLTYPE EnumSubtypes( 124 PST_KEY Key, 125 const GUID __RPC_FAR *pType, 126 DWORD dwFlags, 127 IEnumPStoreTypes __RPC_FAR *__RPC_FAR *ppenum) = 0; 128 129 virtual HRESULT STDMETHODCALLTYPE DeleteItem( 130 PST_KEY Key, 131 const GUID __RPC_FAR *pItemType, 132 const GUID __RPC_FAR *pItemSubtype, 133 LPCWSTR szItemName, 134 PST_PROMPTINFO* pPromptInfo, 135 DWORD dwFlags) = 0; 136 137 virtual HRESULT STDMETHODCALLTYPE ReadItem( 138 PST_KEY Key, 139 const GUID __RPC_FAR *pItemType, 140 const GUID __RPC_FAR *pItemSubtype, 141 LPCWSTR szItemName, 142 DWORD __RPC_FAR *pcbData, 143 BYTE __RPC_FAR *__RPC_FAR *ppbData, 144 PST_PROMPTINFO* pPromptInfo, 145 DWORD dwFlags) = 0; 146 147 virtual HRESULT STDMETHODCALLTYPE WriteItem( 148 PST_KEY Key, 149 const GUID __RPC_FAR *pItemType, 150 const GUID __RPC_FAR *pItemSubtype, 151 LPCWSTR szItemName, 152 DWORD cbData, 153 BYTE __RPC_FAR *pbData, 154 PST_PROMPTINFO* pPromptInfo, 155 DWORD dwDefaultConfirmationStyle, 156 DWORD dwFlags) = 0; 157 158 virtual HRESULT STDMETHODCALLTYPE OpenItem( 159 PST_KEY Key, 160 const GUID __RPC_FAR *pItemType, 161 const GUID __RPC_FAR *pItemSubtype, 162 LPCWSTR szItemName, 163 PST_ACCESSMODE ModeFlags, 164 PST_PROMPTINFO* pPromptInfo, 165 DWORD dwFlags) = 0; 166 167 virtual HRESULT STDMETHODCALLTYPE CloseItem( 168 PST_KEY Key, 169 const GUID __RPC_FAR *pItemType, 170 const GUID __RPC_FAR *pItemSubtype, 171 LPCWSTR szItemName, 172 DWORD dwFlags) = 0; 173 174 virtual HRESULT STDMETHODCALLTYPE EnumItems( 175 PST_KEY Key, 176 const GUID __RPC_FAR *pItemType, 177 const GUID __RPC_FAR *pItemSubtype, 178 DWORD dwFlags, 179 IEnumPStoreItems __RPC_FAR *__RPC_FAR *ppenum) = 0; 180 }; 181 182 #endif // CHROME_COMMON_IMPORTER_PSTORE_DECLARATIONS_H_ 183