Home | History | Annotate | Download | only in importer
      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