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
);
60 case DLL_PROCESS_DETACH
:
66 /**************************************************************************
67 * IPStore->QueryInterface
69 static HRESULT WINAPI
PStore_fnQueryInterface(
74 PStore_impl
*This
= impl_from_IPStore(iface
);
76 TRACE("%p %s\n",This
,debugstr_guid(riid
));
80 if (IsEqualIID(riid
, &IID_IUnknown
))
87 IUnknown_AddRef((IUnknown
*)(*ppvObj
));
90 TRACE("-- Interface: E_NOINTERFACE\n");
94 /******************************************************************************
97 static ULONG WINAPI
PStore_fnAddRef(IPStore
* iface
)
99 PStore_impl
*This
= impl_from_IPStore(iface
);
101 TRACE("%p %u\n", This
, This
->ref
);
103 return InterlockedIncrement( &This
->ref
);
106 /******************************************************************************
109 static ULONG WINAPI
PStore_fnRelease(IPStore
* iface
)
111 PStore_impl
*This
= impl_from_IPStore(iface
);
114 TRACE("%p %u\n", This
, This
->ref
);
116 ref
= InterlockedDecrement( &This
->ref
);
118 HeapFree( GetProcessHeap(), 0, This
);
123 /******************************************************************************
126 static HRESULT WINAPI
PStore_fnGetInfo( IPStore
* iface
, PPST_PROVIDERINFO
* ppProperties
)
132 /******************************************************************************
133 * IPStore->GetProvParam
135 static HRESULT WINAPI
PStore_fnGetProvParam( IPStore
* iface
,
136 DWORD dwParam
, DWORD
* pcbData
, BYTE
** ppbData
, DWORD dwFlags
)
142 /******************************************************************************
143 * IPStore->SetProvParam
145 static HRESULT WINAPI
PStore_fnSetProvParam( IPStore
* This
,
146 DWORD dwParam
, DWORD cbData
, BYTE
* pbData
, DWORD
* dwFlags
)
152 /******************************************************************************
153 * IPStore->CreateType
155 static HRESULT WINAPI
PStore_fnCreateType( IPStore
* This
,
156 PST_KEY Key
, const GUID
* pType
, PPST_TYPEINFO pInfo
, DWORD dwFlags
)
158 FIXME("%p %08x %s %p(%d,%s) %08x\n", This
, Key
, debugstr_guid(pType
),
159 pInfo
, pInfo
->cbSize
, debugstr_w(pInfo
->szDisplayName
), dwFlags
);
164 /******************************************************************************
165 * IPStore->GetTypeInfo
167 static HRESULT WINAPI
PStore_fnGetTypeInfo( IPStore
* This
,
168 PST_KEY Key
, const GUID
* pType
, PPST_TYPEINFO
** ppInfo
, DWORD dwFlags
)
174 /******************************************************************************
175 * IPStore->DeleteType
177 static HRESULT WINAPI
PStore_fnDeleteType( IPStore
* This
,
178 PST_KEY Key
, const GUID
* pType
, DWORD dwFlags
)
180 FIXME("%p %d %s %08x\n", This
, Key
, debugstr_guid(pType
), dwFlags
);
184 /******************************************************************************
185 * IPStore->CreateSubtype
187 static HRESULT WINAPI
PStore_fnCreateSubtype( IPStore
* This
,
188 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
,
189 PPST_TYPEINFO pInfo
, PPST_ACCESSRULESET pRules
, DWORD dwFlags
)
191 FIXME("%p %08x %s %s %p %p %08x\n", This
, Key
, debugstr_guid(pType
),
192 debugstr_guid(pSubtype
), pInfo
, pRules
, dwFlags
);
196 /******************************************************************************
197 * IPStore->GetSubtypeInfo
199 static HRESULT WINAPI
PStore_fnGetSubtypeInfo( IPStore
* This
,
200 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
,
201 PPST_TYPEINFO
** ppInfo
, DWORD dwFlags
)
207 /******************************************************************************
208 * IPStore->DeleteSubtype
210 static HRESULT WINAPI
PStore_fnDeleteSubtype( IPStore
* This
,
211 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
, DWORD dwFlags
)
213 FIXME("%p %u %s %s %08x\n", This
, Key
,
214 debugstr_guid(pType
), debugstr_guid(pSubtype
), dwFlags
);
218 /******************************************************************************
219 * IPStore->ReadAccessRuleset
221 static HRESULT WINAPI
PStore_fnReadAccessRuleset( IPStore
* This
,
222 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
, PPST_TYPEINFO pInfo
,
223 PPST_ACCESSRULESET
** ppRules
, DWORD dwFlags
)
229 /******************************************************************************
230 * IPStore->WriteAccessRuleSet
232 static HRESULT WINAPI
PStore_fnWriteAccessRuleset( IPStore
* This
,
233 PST_KEY Key
, const GUID
* pType
, const GUID
* pSubtype
,
234 PPST_TYPEINFO pInfo
, PPST_ACCESSRULESET pRules
, DWORD dwFlags
)
240 /******************************************************************************
243 static HRESULT WINAPI
PStore_fnEnumTypes( IPStore
* This
, PST_KEY Key
,
244 DWORD dwFlags
, IEnumPStoreTypes
** ppenum
)
250 /******************************************************************************
251 * IPStore->EnumSubtypes
253 static HRESULT WINAPI
PStore_fnEnumSubtypes( IPStore
* This
, PST_KEY Key
,
254 const GUID
* pType
, DWORD dwFlags
, IEnumPStoreTypes
** ppenum
)
260 /******************************************************************************
261 * IPStore->DeleteItem
263 static HRESULT WINAPI
PStore_fnDeleteItem( IPStore
* This
, PST_KEY Key
,
264 const GUID
* pItemType
, const GUID
* pItemSubType
, LPCWSTR szItemName
,
265 PPST_PROMPTINFO pPromptInfo
, DWORD dwFlags
)
271 /******************************************************************************
274 static HRESULT WINAPI
PStore_fnReadItem( IPStore
* This
, PST_KEY Key
,
275 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR szItemName
,
276 DWORD
*cbData
, BYTE
** pbData
, PPST_PROMPTINFO pPromptInfo
, DWORD dwFlags
)
278 FIXME("%p %08x %s %s %s %p %p %p %08x\n", This
, Key
,
279 debugstr_guid(pItemType
), debugstr_guid(pItemSubtype
),
280 debugstr_w(szItemName
), cbData
, pbData
, pPromptInfo
, dwFlags
);
284 /******************************************************************************
287 static HRESULT WINAPI
PStore_fnWriteItem( IPStore
* This
, PST_KEY Key
,
288 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR szItemName
,
289 DWORD cbData
, BYTE
* ppbData
, PPST_PROMPTINFO pPromptInfo
,
290 DWORD dwDefaultConfirmationStyle
, DWORD dwFlags
)
292 FIXME("%p %08x %s %s %s %d %p %p %08x\n", This
, Key
,
293 debugstr_guid(pItemType
), debugstr_guid(pItemSubtype
),
294 debugstr_w(szItemName
), cbData
, ppbData
, pPromptInfo
, dwFlags
);
298 /******************************************************************************
301 static HRESULT WINAPI
PStore_fnOpenItem( IPStore
* This
, PST_KEY Key
,
302 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR szItemName
,
303 PST_ACCESSMODE ModeFlags
, PPST_PROMPTINFO pProomptInfo
, DWORD dwFlags
)
305 FIXME("(%p,%08x,%s,%s,%s,%08x,%p,%08x) stub\n", This
, Key
, debugstr_guid(pItemType
),
306 debugstr_guid(pItemSubtype
), debugstr_w(szItemName
), ModeFlags
, pProomptInfo
, dwFlags
);
310 /******************************************************************************
313 static HRESULT WINAPI
PStore_fnCloseItem( IPStore
* This
, PST_KEY Key
,
314 const GUID
* pItemType
, const GUID
* pItemSubtype
, LPCWSTR
* szItemName
,
321 /******************************************************************************
324 static HRESULT WINAPI
PStore_fnEnumItems( IPStore
* This
, PST_KEY Key
,
325 const GUID
* pItemType
, const GUID
* pItemSubtype
, DWORD dwFlags
,
326 IEnumPStoreItems
** ppenum
)
333 static const IPStoreVtbl pstores_vtbl
=
335 PStore_fnQueryInterface
,
339 PStore_fnGetProvParam
,
340 PStore_fnSetProvParam
,
342 PStore_fnGetTypeInfo
,
344 PStore_fnCreateSubtype
,
345 PStore_fnGetSubtypeInfo
,
346 PStore_fnDeleteSubtype
,
347 PStore_fnReadAccessRuleset
,
348 PStore_fnWriteAccessRuleset
,
350 PStore_fnEnumSubtypes
,
359 HRESULT WINAPI
PStoreCreateInstance( IPStore
** ppProvider
,
360 PST_PROVIDERID
* pProviderID
, void* pReserved
, DWORD dwFlags
)
364 TRACE("%p %s %p %08x\n", ppProvider
, debugstr_guid(pProviderID
), pReserved
, dwFlags
);
366 ips
= HeapAlloc( GetProcessHeap(), 0, sizeof (PStore_impl
) );
368 return E_OUTOFMEMORY
;
370 ips
->IPStore_iface
.lpVtbl
= &pstores_vtbl
;
373 *ppProvider
= (IPStore
*) ips
;
378 HRESULT WINAPI
DllRegisterServer(void)
384 HRESULT WINAPI
DllUnregisterServer(void)
390 /***********************************************************************
391 * DllGetClassObject (PSTOREC.@)
393 HRESULT WINAPI
DllGetClassObject(REFCLSID rclsid
, REFIID iid
, LPVOID
*ppv
)
395 FIXME("%s %s %p\n", debugstr_guid(rclsid
), debugstr_guid(iid
), ppv
);
396 return CLASS_E_CLASSNOTAVAILABLE
;
399 HRESULT WINAPI
DllCanUnloadNow(void)