2 * Protected Storage (pstores)
4 * Copyright 2004 Mike McCormack for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #define WIN32_NO_STATUS
23 #define COM_NO_WINDOWS_H
30 //#include "winuser.h"
34 #include <wine/debug.h>
36 WINE_DEFAULT_DEBUG_CHANNEL(pstores
);
40 IPStore IPStore_iface
;
44 static inline PStore_impl
*impl_from_IPStore(IPStore
*iface
)
46 return CONTAINING_RECORD(iface
, PStore_impl
, IPStore_iface
);
49 BOOL WINAPI
DllMain(HINSTANCE hinst
, DWORD fdwReason
, LPVOID fImpLoad
)
51 TRACE("%p %x %p\n", hinst
, fdwReason
, fImpLoad
);
55 case DLL_WINE_PREATTACH
:
56 return FALSE
; /* prefer native version */
57 case DLL_PROCESS_ATTACH
:
58 DisableThreadLibraryCalls(hinst
);
64 /**************************************************************************
65 * IPStore->QueryInterface
67 static HRESULT WINAPI
PStore_fnQueryInterface(
72 PStore_impl
*This
= impl_from_IPStore(iface
);
74 TRACE("%p %s\n",This
,debugstr_guid(riid
));
78 if (IsEqualIID(riid
, &IID_IUnknown
))
85 IUnknown_AddRef((IUnknown
*)(*ppvObj
));
88 TRACE("-- Interface: E_NOINTERFACE\n");
92 /******************************************************************************
95 static ULONG WINAPI
PStore_fnAddRef(IPStore
* iface
)
97 PStore_impl
*This
= impl_from_IPStore(iface
);
99 TRACE("%p %u\n", This
, This
->ref
);
101 return InterlockedIncrement( &This
->ref
);
104 /******************************************************************************
107 static ULONG WINAPI
PStore_fnRelease(IPStore
* iface
)
109 PStore_impl
*This
= impl_from_IPStore(iface
);
112 TRACE("%p %u\n", This
, This
->ref
);
114 ref
= InterlockedDecrement( &This
->ref
);
116 HeapFree( GetProcessHeap(), 0, This
);
121 /******************************************************************************
124 static HRESULT WINAPI
PStore_fnGetInfo( IPStore
* iface
, PPST_PROVIDERINFO
* ppProperties
)
130 /******************************************************************************
131 * IPStore->GetProvParam
133 static HRESULT WINAPI
PStore_fnGetProvParam( IPStore
* iface
,
134 DWORD dwParam
, DWORD
* pcbData
, BYTE
** ppbData
, DWORD dwFlags
)
140 /******************************************************************************
141 * IPStore->SetProvParam
143 static HRESULT WINAPI
PStore_fnSetProvParam( IPStore
* This
,
144 DWORD dwParam
, DWORD cbData
, BYTE
* pbData
, DWORD
* dwFlags
)
150 /******************************************************************************
151 * IPStore->CreateType
153 static HRESULT WINAPI
PStore_fnCreateType( IPStore
* This
,
154 PST_KEY Key
, const GUID
* pType
, PPST_TYPEINFO pInfo
, DWORD dwFlags
)
156 FIXME("%p %08x %s %p(%d,%s) %08x\n", This
, Key
, debugstr_guid(pType
),
157 pInfo
, pInfo
->cbSize
, debugstr_w(pInfo
->szDisplayName
), dwFlags
);
162 /******************************************************************************
163 * IPStore->GetTypeInfo
165 static HRESULT WINAPI
PStore_fnGetTypeInfo( IPStore
* This
,
166 PST_KEY Key
, const GUID
* pType
, PPST_TYPEINFO
** ppInfo
, DWORD dwFlags
)
172 /******************************************************************************
173 * IPStore->DeleteType
175 static HRESULT WINAPI
PStore_fnDeleteType( IPStore
* This
,
176 PST_KEY Key
, const GUID
* pType
, DWORD dwFlags
)
178 FIXME("%p %d %s %08x\n", This
, Key
, debugstr_guid(pType
), dwFlags
);
182 /******************************************************************************
183 * IPStore->CreateSubtype
185 static HRESULT WINAPI
PStore_fnCreateSubtype( IPStore
* This
,
186 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
,
187 PPST_TYPEINFO pInfo
, PPST_ACCESSRULESET pRules
, DWORD dwFlags
)
189 FIXME("%p %08x %s %s %p %p %08x\n", This
, Key
, debugstr_guid(pType
),
190 debugstr_guid(pSubtype
), pInfo
, pRules
, dwFlags
);
194 /******************************************************************************
195 * IPStore->GetSubtypeInfo
197 static HRESULT WINAPI
PStore_fnGetSubtypeInfo( IPStore
* This
,
198 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
,
199 PPST_TYPEINFO
** ppInfo
, DWORD dwFlags
)
205 /******************************************************************************
206 * IPStore->DeleteSubtype
208 static HRESULT WINAPI
PStore_fnDeleteSubtype( IPStore
* This
,
209 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
, DWORD dwFlags
)
211 FIXME("%p %u %s %s %08x\n", This
, Key
,
212 debugstr_guid(pType
), debugstr_guid(pSubtype
), dwFlags
);
216 /******************************************************************************
217 * IPStore->ReadAccessRuleset
219 static HRESULT WINAPI
PStore_fnReadAccessRuleset( IPStore
* This
,
220 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
, PPST_TYPEINFO pInfo
,
221 PPST_ACCESSRULESET
** ppRules
, DWORD dwFlags
)
227 /******************************************************************************
228 * IPStore->WriteAccessRuleSet
230 static HRESULT WINAPI
PStore_fnWriteAccessRuleset( IPStore
* This
,
231 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
,
232 PPST_TYPEINFO pInfo
, PPST_ACCESSRULESET pRules
, DWORD dwFlags
)
238 /******************************************************************************
241 static HRESULT WINAPI
PStore_fnEnumTypes( IPStore
* This
, PST_KEY Key
,
242 DWORD dwFlags
, IEnumPStoreTypes
** ppenum
)
248 /******************************************************************************
249 * IPStore->EnumSubtypes
251 static HRESULT WINAPI
PStore_fnEnumSubtypes( IPStore
* This
, PST_KEY Key
,
252 const GUID
* pType
, DWORD dwFlags
, IEnumPStoreTypes
** ppenum
)
258 /******************************************************************************
259 * IPStore->DeleteItem
261 static HRESULT WINAPI
PStore_fnDeleteItem( IPStore
* This
, PST_KEY Key
,
262 const GUID
* pItemType
, const GUID
* pItemSubType
, LPCWSTR szItemName
,
263 PPST_PROMPTINFO pPromptInfo
, DWORD dwFlags
)
269 /******************************************************************************
272 static HRESULT WINAPI
PStore_fnReadItem( IPStore
* This
, PST_KEY Key
,
273 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR szItemName
,
274 DWORD
*cbData
, BYTE
** pbData
, PPST_PROMPTINFO pPromptInfo
, DWORD dwFlags
)
276 FIXME("%p %08x %s %s %s %p %p %p %08x\n", This
, Key
,
277 debugstr_guid(pItemType
), debugstr_guid(pItemSubtype
),
278 debugstr_w(szItemName
), cbData
, pbData
, pPromptInfo
, dwFlags
);
282 /******************************************************************************
285 static HRESULT WINAPI
PStore_fnWriteItem( IPStore
* This
, PST_KEY Key
,
286 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR szItemName
,
287 DWORD cbData
, BYTE
* ppbData
, PPST_PROMPTINFO pPromptInfo
,
288 DWORD dwDefaultConfirmationStyle
, DWORD dwFlags
)
290 FIXME("%p %08x %s %s %s %d %p %p %08x\n", This
, Key
,
291 debugstr_guid(pItemType
), debugstr_guid(pItemSubtype
),
292 debugstr_w(szItemName
), cbData
, ppbData
, pPromptInfo
, dwFlags
);
296 /******************************************************************************
299 static HRESULT WINAPI
PStore_fnOpenItem( IPStore
* This
, PST_KEY Key
,
300 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR szItemName
,
301 PST_ACCESSMODE ModeFlags
, PPST_PROMPTINFO pProomptInfo
, DWORD dwFlags
)
303 FIXME("(%p,%08x,%s,%s,%s,%08x,%p,%08x) stub\n", This
, Key
, debugstr_guid(pItemType
),
304 debugstr_guid(pItemSubtype
), debugstr_w(szItemName
), ModeFlags
, pProomptInfo
, dwFlags
);
308 /******************************************************************************
311 static HRESULT WINAPI
PStore_fnCloseItem( IPStore
* This
, PST_KEY Key
,
312 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR
* szItemName
,
319 /******************************************************************************
322 static HRESULT WINAPI
PStore_fnEnumItems( IPStore
* This
, PST_KEY Key
,
323 const GUID
* pItemType
, const GUID
* pItemSubtype
, DWORD dwFlags
,
324 IEnumPStoreItems
** ppenum
)
331 static const IPStoreVtbl pstores_vtbl
=
333 PStore_fnQueryInterface
,
337 PStore_fnGetProvParam
,
338 PStore_fnSetProvParam
,
340 PStore_fnGetTypeInfo
,
342 PStore_fnCreateSubtype
,
343 PStore_fnGetSubtypeInfo
,
344 PStore_fnDeleteSubtype
,
345 PStore_fnReadAccessRuleset
,
346 PStore_fnWriteAccessRuleset
,
348 PStore_fnEnumSubtypes
,
357 HRESULT WINAPI
PStoreCreateInstance( IPStore
** ppProvider
,
358 PST_PROVIDERID
* pProviderID
, void* pReserved
, DWORD dwFlags
)
362 TRACE("%p %s %p %08x\n", ppProvider
, debugstr_guid(pProviderID
), pReserved
, dwFlags
);
364 ips
= HeapAlloc( GetProcessHeap(), 0, sizeof (PStore_impl
) );
366 return E_OUTOFMEMORY
;
368 ips
->IPStore_iface
.lpVtbl
= &pstores_vtbl
;
371 *ppProvider
= (IPStore
*) ips
;
376 HRESULT WINAPI
DllRegisterServer(void)
382 HRESULT WINAPI
DllUnregisterServer(void)
388 /***********************************************************************
389 * DllGetClassObject (PSTOREC.@)
391 HRESULT WINAPI
DllGetClassObject(REFCLSID rclsid
, REFIID iid
, LPVOID
*ppv
)
393 FIXME("%s %s %p\n", debugstr_guid(rclsid
), debugstr_guid(iid
), ppv
);
394 return CLASS_E_CLASSNOTAVAILABLE
;
397 HRESULT WINAPI
DllCanUnloadNow(void)