ReactOS 0.4.17-dev-357-ga8f14ff
CViewStatePropertyBag Class Reference
Inheritance diagram for CViewStatePropertyBag:
Collaboration diagram for CViewStatePropertyBag:

Public Member Functions

 CViewStatePropertyBag ()
 
 ~CViewStatePropertyBag () override
 
HRESULT Init (_In_opt_ LPCITEMIDLIST pidl, _In_opt_ LPCWSTR pszPath, _In_ DWORD dwVspbFlags)
 
BOOL IsSameBag (LPCITEMIDLIST pidl, LPCWSTR pszPath, DWORD dwVspbFlags) const
 
STDMETHODIMP Read (_In_z_ LPCWSTR pszPropName, _Inout_ VARIANT *pvari, _Inout_opt_ IErrorLog *pErrorLog) override
 
STDMETHODIMP Write (_In_z_ LPCWSTR pszPropName, _In_ VARIANT *pvari) override
 
- Public Member Functions inherited from CBasePropertyBag
 CBasePropertyBag (DWORD dwMode)
 
virtual ~CBasePropertyBag ()
 
STDMETHODIMP QueryInterface (REFIID riid, void **ppvObject) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
- Public Member Functions inherited from IPropertyBag
HRESULT Read ([in] LPCOLESTR pszPropName, [in, out] VARIANT *pVar, [in] IErrorLog *pErrorLog)
 
HRESULT RemoteRead ([in] LPCOLESTR pszPropName, [out] VARIANT *pVar, [in] IErrorLog *pErrorLog, [in] DWORD varType, [in] IUnknown *pUnkObj)
 
HRESULT Write ([in] LPCOLESTR pszPropName, [in] VARIANT *pVar)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Protected Member Functions

BOOL _IsSamePidl (LPCITEMIDLIST pidlOther) const
 
BOOL _IsSystemFolder () const
 
BOOL _CanAccessPidlBag () const
 
BOOL _CanAccessUserDefaultsBag () const
 
BOOL _CanAccessFolderDefaultsBag () const
 
BOOL _CanAccessGlobalDefaultsBag () const
 
BOOL _CanAccessInheritBag () const
 
BOOL _CanAccessUpgradeBag () const
 
HKEY _GetHKey (DWORD dwVspbFlags)
 
UINT _GetMRUSize (HKEY hKey)
 
HRESULT _GetMRUSlots (LPCITEMIDLIST pidl, DWORD dwMode, HKEY hKey, UINT *puSlots, UINT cSlots, UINT *pcSlots)
 
HRESULT _GetMRUSlot (LPCITEMIDLIST pidl, DWORD dwMode, HKEY hKey, UINT *pSlot)
 
HRESULT _GetRegKey (LPCITEMIDLIST pidl, LPCWSTR pszBagName, DWORD dwFlags, DWORD dwMode, HKEY hKey, LPWSTR pszDest, INT cchDest)
 
HRESULT _CreateBag (LPITEMIDLIST pidl, LPCWSTR pszPath, DWORD dwVspbFlags, DWORD dwMode, REFIID riid, IPropertyBag **pppb)
 
HRESULT _FindNearestInheritBag (REFIID riid, IPropertyBag **pppb)
 
void _ResetTryAgainFlag ()
 
BOOL _EnsureReadBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsurePidlBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsureInheritBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsureUpgradeBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsureUserDefaultsBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsureFolderDefaultsBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsureGlobalDefaultsBag (DWORD dwMode, REFIID riid)
 
BOOL _EnsureWriteBag (DWORD dwMode, REFIID riid)
 
HRESULT _ReadPidlBag (LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
 
HRESULT _ReadInheritBag (LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
 
HRESULT _ReadUpgradeBag (LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
 
HRESULT _ReadUserDefaultsBag (LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
 
HRESULT _ReadFolderDefaultsBag (LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
 
HRESULT _ReadGlobalDefaultsBag (LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
 
void _PruneMRUTree ()
 

Protected Attributes

LPITEMIDLIST m_pidl = NULL
 
LPWSTR m_pszPath = NULL
 
DWORD m_dwVspbFlags = 0
 
CComPtr< IPropertyBagm_pPidlBag
 
CComPtr< IPropertyBagm_pUpgradeBag
 
CComPtr< IPropertyBagm_pInheritBag
 
CComPtr< IPropertyBagm_pUserDefaultsBag
 
CComPtr< IPropertyBagm_pFolderDefaultsBag
 
CComPtr< IPropertyBagm_pGlobalDefaultsBag
 
CComPtr< IPropertyBagm_pReadBag
 
CComPtr< IPropertyBagm_pWriteBag
 
BOOL m_bPidlBag = FALSE
 
BOOL m_bUpgradeBag = FALSE
 
BOOL m_bInheritBag = FALSE
 
BOOL m_bUserDefaultsBag = FALSE
 
BOOL m_bFolderDefaultsBag = FALSE
 
BOOL m_bGlobalDefaultsBag = FALSE
 
BOOL m_bReadBag = FALSE
 
BOOL m_bWriteBag = FALSE
 
- Protected Attributes inherited from CBasePropertyBag
LONG m_cRefs
 
DWORD m_dwMode
 

Additional Inherited Members

- Public Types inherited from IPropertyBag
typedef IPropertyBagLPPROPERTYBAG
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 

Detailed Description

Definition at line 1218 of file propbag.cpp.

Constructor & Destructor Documentation

◆ CViewStatePropertyBag()

CViewStatePropertyBag::CViewStatePropertyBag ( )
inline

Definition at line 1302 of file propbag.cpp.

#define STGM_READ
Definition: objbase.h:936

◆ ~CViewStatePropertyBag()

CViewStatePropertyBag::~CViewStatePropertyBag ( )
inlineoverride

Definition at line 1304 of file propbag.cpp.

1305 {
1308 }
LPITEMIDLIST m_pidl
Definition: propbag.cpp:1221
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1051

Member Function Documentation

◆ _CanAccessFolderDefaultsBag()

BOOL CViewStatePropertyBag::_CanAccessFolderDefaultsBag ( ) const
protected

Definition at line 1396 of file propbag.cpp.

1397{
1399 return TRUE;
1400
1402}
BOOL _CanAccessUserDefaultsBag() const
Definition: propbag.cpp:1388
#define TRUE
Definition: types.h:120
#define SHGVSPB_ALLUSERS
Definition: shlwapi.h:168
#define SHGVSPB_PERFOLDER
Definition: shlwapi.h:169

Referenced by _CanAccessGlobalDefaultsBag(), and _EnsureFolderDefaultsBag().

◆ _CanAccessGlobalDefaultsBag()

BOOL CViewStatePropertyBag::_CanAccessGlobalDefaultsBag ( ) const
protected

Definition at line 1404 of file propbag.cpp.

1405{
1407 return TRUE;
1408
1410}
BOOL _CanAccessFolderDefaultsBag() const
Definition: propbag.cpp:1396
#define SHGVSPB_GLOBALDEFAULTS
Definition: shlwapi.h:177

Referenced by _EnsureGlobalDefaultsBag().

◆ _CanAccessInheritBag()

BOOL CViewStatePropertyBag::_CanAccessInheritBag ( ) const
protected

Definition at line 1412 of file propbag.cpp.

1413{
1415}
BOOL _CanAccessPidlBag() const
Definition: propbag.cpp:1383
#define SHGVSPB_INHERIT
Definition: shlwapi.h:171

Referenced by _EnsureInheritBag().

◆ _CanAccessPidlBag()

BOOL CViewStatePropertyBag::_CanAccessPidlBag ( ) const
protected

Definition at line 1383 of file propbag.cpp.

1384{
1386}
#define SHGVSPB_FOLDER
Definition: shlwapi.h:174

Referenced by _CanAccessInheritBag(), _CanAccessUserDefaultsBag(), and _EnsurePidlBag().

◆ _CanAccessUpgradeBag()

BOOL CViewStatePropertyBag::_CanAccessUpgradeBag ( ) const
protected

Definition at line 1417 of file propbag.cpp.

1418{
1419 return StrCmpW(m_pszPath, L"Desktop") == 0;
1420}
int WINAPI StrCmpW(const WCHAR *str, const WCHAR *comp)
Definition: string.c:458
#define L(x)
Definition: resources.c:13

Referenced by _EnsureUpgradeBag().

◆ _CanAccessUserDefaultsBag()

BOOL CViewStatePropertyBag::_CanAccessUserDefaultsBag ( ) const
protected

Definition at line 1388 of file propbag.cpp.

1389{
1390 if (_CanAccessPidlBag())
1391 return TRUE;
1392
1394}
#define SHGVSPB_USERDEFAULTS
Definition: shlwapi.h:176

Referenced by _CanAccessFolderDefaultsBag(), and _EnsureUserDefaultsBag().

◆ _CreateBag()

HRESULT CViewStatePropertyBag::_CreateBag ( LPITEMIDLIST  pidl,
LPCWSTR  pszPath,
DWORD  dwVspbFlags,
DWORD  dwMode,
REFIID  riid,
IPropertyBag **  pppb 
)
protected

Definition at line 1548 of file propbag.cpp.

1555{
1556 HRESULT hr;
1557 HKEY hKey;
1560 WCHAR szBuff[64];
1561
1562 if (MODE_CAN_WRITE(dwMode))
1563 dwMode |= STGM_CREATE;
1564
1565 if ((dwVspbFlags & SHGVSPB_ALLUSERS) && (dwVspbFlags & SHGVSPB_PERFOLDER))
1566 {
1567 hr = BindCtx_CreateWithMode(dwMode, &pBC);
1568 if (SUCCEEDED(hr))
1569 {
1570 hr = SHGetDesktopFolder(&psf);
1571 if (SUCCEEDED(hr))
1572 {
1573 hr = psf->BindToObject(m_pidl, pBC, riid, (void **)pppb);
1574 if (SUCCEEDED(hr) && !*pppb)
1575 hr = E_FAIL;
1576 }
1577 }
1578 }
1579 else
1580 {
1581 hKey = _GetHKey(dwVspbFlags);
1582 if (!hKey)
1583 return E_FAIL;
1584
1585 hr = _GetRegKey(pidl, pszPath, dwVspbFlags, dwMode, hKey, szBuff, _countof(szBuff));
1586 if (SUCCEEDED(hr))
1587 hr = SHCreatePropertyBagOnRegKey(hKey, szBuff, dwMode, riid, (void**)pppb);
1588
1590 }
1591
1592 return hr;
1593}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define RegCloseKey(hKey)
Definition: registry.h:49
HRESULT _GetRegKey(LPCITEMIDLIST pidl, LPCWSTR pszBagName, DWORD dwFlags, DWORD dwMode, HKEY hKey, LPWSTR pszDest, INT cchDest)
Definition: propbag.cpp:1496
HKEY _GetHKey(DWORD dwVspbFlags)
Definition: propbag.cpp:1438
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
FxAutoRegKey hKey
REFIID riid
Definition: atlbase.h:39
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define STGM_CREATE
Definition: objbase.h:945
short WCHAR
Definition: pedump.c:58
EXTERN_C HRESULT WINAPI SHCreatePropertyBagOnRegKey(_In_ HKEY hKey, _In_z_ LPCWSTR pszSubKey, _In_ DWORD dwMode, _In_ REFIID riid, _Out_ void **ppvObj)
Definition: propbag.cpp:583
#define MODE_CAN_WRITE(dwMode)
Definition: propbag.cpp:26
static HRESULT BindCtx_CreateWithMode(DWORD dwMode, IBindCtx **ppbc)
Definition: propbag.cpp:1527
#define _countof(array)
Definition: sndvol32.h:70

Referenced by _EnsureFolderDefaultsBag(), _EnsureGlobalDefaultsBag(), _EnsurePidlBag(), _EnsureReadBag(), _EnsureUserDefaultsBag(), and _EnsureWriteBag().

◆ _EnsureFolderDefaultsBag()

BOOL CViewStatePropertyBag::_EnsureFolderDefaultsBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1676 of file propbag.cpp.

1677{
1679 {
1681 if (_IsSystemFolder())
1682 {
1684 dwMode, riid, &m_pFolderDefaultsBag);
1685 }
1686 }
1687 return (m_pFolderDefaultsBag != NULL);
1688}
CComPtr< IPropertyBag > m_pFolderDefaultsBag
Definition: propbag.cpp:1228
BOOL _IsSystemFolder() const
Definition: propbag.cpp:1366
HRESULT _CreateBag(LPITEMIDLIST pidl, LPCWSTR pszPath, DWORD dwVspbFlags, DWORD dwMode, REFIID riid, IPropertyBag **pppb)
Definition: propbag.cpp:1548
#define NULL
Definition: types.h:112

Referenced by _ReadFolderDefaultsBag().

◆ _EnsureGlobalDefaultsBag()

BOOL CViewStatePropertyBag::_EnsureGlobalDefaultsBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1690 of file propbag.cpp.

1691{
1693 {
1696 }
1697 return (m_pGlobalDefaultsBag != NULL);
1698}
BOOL _CanAccessGlobalDefaultsBag() const
Definition: propbag.cpp:1404
CComPtr< IPropertyBag > m_pGlobalDefaultsBag
Definition: propbag.cpp:1229

Referenced by _ReadGlobalDefaultsBag().

◆ _EnsureInheritBag()

BOOL CViewStatePropertyBag::_EnsureInheritBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1646 of file propbag.cpp.

1647{
1649 {
1652 }
1653 return (m_pInheritBag != NULL);
1654}
BOOL _CanAccessInheritBag() const
Definition: propbag.cpp:1412
HRESULT _FindNearestInheritBag(REFIID riid, IPropertyBag **pppb)
Definition: propbag.cpp:1596
CComPtr< IPropertyBag > m_pInheritBag
Definition: propbag.cpp:1226

Referenced by _ReadInheritBag().

◆ _EnsurePidlBag()

BOOL CViewStatePropertyBag::_EnsurePidlBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1636 of file propbag.cpp.

1637{
1639 {
1640 m_bPidlBag = TRUE;
1642 }
1643 return (m_pPidlBag != NULL);
1644}
CComPtr< IPropertyBag > m_pPidlBag
Definition: propbag.cpp:1224

Referenced by _ReadPidlBag().

◆ _EnsureReadBag()

BOOL CViewStatePropertyBag::_EnsureReadBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1626 of file propbag.cpp.

1627{
1628 if (!m_pReadBag && !m_bReadBag)
1629 {
1630 m_bReadBag = TRUE;
1632 }
1633 return (m_pReadBag != NULL);
1634}
CComPtr< IPropertyBag > m_pReadBag
Definition: propbag.cpp:1230

Referenced by Read().

◆ _EnsureUpgradeBag()

BOOL CViewStatePropertyBag::_EnsureUpgradeBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1656 of file propbag.cpp.

1657{
1659 {
1662 }
1663 return (m_pUpgradeBag != NULL);
1664}
BOOL _CanAccessUpgradeBag() const
Definition: propbag.cpp:1417
CComPtr< IPropertyBag > m_pUpgradeBag
Definition: propbag.cpp:1225
HRESULT SHGetDesktopUpgradePropertyBag(REFIID riid, void **ppvObj)
Definition: propbag.cpp:1209

Referenced by _ReadUpgradeBag().

◆ _EnsureUserDefaultsBag()

BOOL CViewStatePropertyBag::_EnsureUserDefaultsBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1666 of file propbag.cpp.

1667{
1669 {
1672 }
1673 return (m_pUserDefaultsBag != NULL);
1674}
CComPtr< IPropertyBag > m_pUserDefaultsBag
Definition: propbag.cpp:1227

Referenced by _ReadUserDefaultsBag().

◆ _EnsureWriteBag()

BOOL CViewStatePropertyBag::_EnsureWriteBag ( DWORD  dwMode,
REFIID  riid 
)
protected

Definition at line 1828 of file propbag.cpp.

1829{
1830 if (!m_pWriteBag && !m_bWriteBag)
1831 {
1832 m_bWriteBag = TRUE;
1834 if (m_pWriteBag)
1835 {
1838 _PruneMRUTree();
1839 }
1840 }
1841 return (m_pWriteBag != NULL);
1842}
CComPtr< IPropertyBag > m_pWriteBag
Definition: propbag.cpp:1231

Referenced by Write().

◆ _FindNearestInheritBag()

HRESULT CViewStatePropertyBag::_FindNearestInheritBag ( REFIID  riid,
IPropertyBag **  pppb 
)
protected

Definition at line 1596 of file propbag.cpp.

1597{
1598 *pppb = NULL;
1599
1601 if (!hKey)
1602 return E_FAIL;
1603
1604 UINT cSlots, anSlots[64];
1605 if (FAILED(_GetMRUSlots(m_pidl, 0, hKey, anSlots, _countof(anSlots), &cSlots)) || !cSlots)
1606 {
1608 return E_FAIL;
1609 }
1610
1611 HRESULT hr = E_FAIL;
1612 WCHAR szBuff[64];
1613 for (UINT iSlot = 0; iSlot < cSlots; ++iSlot)
1614 {
1615 StringCchPrintfW(szBuff, _countof(szBuff), L"Bags\\%d\\%s\\Inherit", anSlots[iSlot],
1616 m_pszPath);
1617 hr = SHCreatePropertyBagOnRegKey(hKey, szBuff, STGM_READ, riid, (void**)pppb);
1618 if (SUCCEEDED(hr))
1619 break;
1620 }
1621
1623 return hr;
1624}
HRESULT _GetMRUSlots(LPCITEMIDLIST pidl, DWORD dwMode, HKEY hKey, UINT *puSlots, UINT cSlots, UINT *pcSlots)
Definition: propbag.cpp:1460
#define FAILED(hr)
Definition: intsafe.h:51
unsigned int UINT
Definition: ndis.h:50
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530

Referenced by _EnsureInheritBag().

◆ _GetHKey()

HKEY CViewStatePropertyBag::_GetHKey ( DWORD  dwVspbFlags)
protected

Definition at line 1438 of file propbag.cpp.

1439{
1440 if (!(dwVspbFlags & (SHGVSPB_INHERIT | SHGVSPB_PERUSER)))
1442
1443 if ((m_dwVspbFlags & SHGVSPB_ROAM) && (dwVspbFlags & SHGVSPB_PERFOLDER))
1445
1447}
HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create)
Definition: ordinal.c:4049
@ SHKEY_Root_HKLM
Definition: ordinal.c:2806
@ SHKEY_Key_ShellNoRoam
Definition: ordinal.c:2809
@ SHKEY_Root_HKCU
Definition: ordinal.c:2805
@ SHKEY_Key_Shell
Definition: ordinal.c:2808
#define SHGVSPB_PERUSER
Definition: shlwapi.h:167
#define SHGVSPB_ROAM
Definition: shlwapi.h:172

Referenced by _CreateBag(), _FindNearestInheritBag(), and _PruneMRUTree().

◆ _GetMRUSize()

UINT CViewStatePropertyBag::_GetMRUSize ( HKEY  hKey)
protected

Definition at line 1449 of file propbag.cpp.

1450{
1451 DWORD dwValue, cbValue = sizeof(dwValue);
1452
1453 if (SHGetValueW(hKey, NULL, L"BagMRU Size", NULL, &dwValue, &cbValue) != ERROR_SUCCESS)
1454 return 400; // The default size of the MRU (most recently used) list
1455
1456 return (UINT)dwValue;
1457}
#define ERROR_SUCCESS
Definition: deptool.c:10
DWORD WINAPI SHGetValueW(HKEY hkey, const WCHAR *subkey, const WCHAR *value, DWORD *type, void *data, DWORD *data_len)
Definition: main.c:2222
unsigned long DWORD
Definition: ntddk_ex.h:95

Referenced by _GetMRUSlots().

◆ _GetMRUSlot()

HRESULT CViewStatePropertyBag::_GetMRUSlot ( LPCITEMIDLIST  pidl,
DWORD  dwMode,
HKEY  hKey,
UINT pSlot 
)
protected

Definition at line 1489 of file propbag.cpp.

1490{
1491 UINT cSlots;
1492 return _GetMRUSlots(pidl, dwMode, hKey, pSlot, 1, &cSlots);
1493}

Referenced by _GetRegKey().

◆ _GetMRUSlots()

HRESULT CViewStatePropertyBag::_GetMRUSlots ( LPCITEMIDLIST  pidl,
DWORD  dwMode,
HKEY  hKey,
UINT puSlots,
UINT  cSlots,
UINT pcSlots 
)
protected

Definition at line 1460 of file propbag.cpp.

1467{
1468 CComPtr<IMruPidlList> pMruList;
1469 HRESULT hr = ::CoCreateInstance(CLSID_MruPidlList, NULL, CLSCTX_INPROC_SERVER,
1470 IID_IMruPidlList, (void**)&pMruList);
1471 if (FAILED(hr))
1472 return hr;
1473
1474 UINT cMRUSize = _GetMRUSize(hKey);
1475 hr = pMruList->InitList(cMRUSize, hKey, L"BagMRU");
1476 if (FAILED(hr))
1477 return hr;
1478
1479 hr = pMruList->QueryPidl(pidl, cSlots, puSlots, pcSlots);
1480 if (hr == S_OK || MODE_CAN_WRITE(dwMode)) // FIXME: HACK! (Without this, a new pidl can never be saved)
1481 hr = pMruList->UsePidl(pidl, puSlots);
1482 else if (cSlots == 1)
1483 hr = E_FAIL;
1484
1485 return hr;
1486}
UINT _GetMRUSize(HKEY hKey)
Definition: propbag.cpp:1449
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define S_OK
Definition: intsafe.h:52

Referenced by _FindNearestInheritBag(), and _GetMRUSlot().

◆ _GetRegKey()

HRESULT CViewStatePropertyBag::_GetRegKey ( LPCITEMIDLIST  pidl,
LPCWSTR  pszBagName,
DWORD  dwFlags,
DWORD  dwMode,
HKEY  hKey,
LPWSTR  pszDest,
INT  cchDest 
)
protected

Definition at line 1496 of file propbag.cpp.

1504{
1505 HRESULT hr = S_OK;
1506 UINT nSlot;
1507
1509 {
1510 hr = _GetMRUSlot(pidl, dwMode, hKey, &nSlot);
1511 if (SUCCEEDED(hr))
1512 {
1514 StringCchPrintfW(pszDest, cchDest, L"Bags\\%d\\%s\\Inherit", nSlot, pszBagName);
1515 else
1516 StringCchPrintfW(pszDest, cchDest, L"Bags\\%d\\%s", nSlot, pszBagName);
1517 }
1518 }
1519 else
1520 {
1521 StringCchPrintfW(pszDest, cchDest, L"Bags\\AllFolders\\%s", pszBagName);
1522 }
1523
1524 return hr;
1525}
HRESULT _GetMRUSlot(LPCITEMIDLIST pidl, DWORD dwMode, HKEY hKey, UINT *pSlot)
Definition: propbag.cpp:1489
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
_In_ INT cchDest
Definition: shlwapi.h:1151

Referenced by _CreateBag().

◆ _IsSamePidl()

BOOL CViewStatePropertyBag::_IsSamePidl ( LPCITEMIDLIST  pidlOther) const
protected

Definition at line 1353 of file propbag.cpp.

1354{
1355 if (!pidlOther && !m_pidl)
1356 return TRUE;
1357
1358 return (pidlOther && m_pidl && ILIsEqual(pidlOther, m_pidl));
1359}
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:583

Referenced by IsSameBag().

◆ _IsSystemFolder()

BOOL CViewStatePropertyBag::_IsSystemFolder ( ) const
protected

Definition at line 1366 of file propbag.cpp.

1367{
1368 LPCITEMIDLIST ppidlLast;
1370
1371 HRESULT hr = SHBindToParent(m_pidl, IID_IShellFolder, (void **)&psf, &ppidlLast);
1372 if (FAILED(hr))
1373 return FALSE;
1374
1375 WIN32_FIND_DATAW FindData;
1376 hr = SHGetDataFromIDListW(psf, ppidlLast, SHGDFIL_FINDDATA, &FindData, sizeof(FindData));
1377 if (FAILED(hr))
1378 return FALSE;
1379
1380 return PathIsSystemFolderW(NULL, FindData.dwFileAttributes);
1381}
#define FALSE
Definition: types.h:117
BOOL WINAPI PathIsSystemFolderW(LPCWSTR lpszPath, DWORD dwAttrib)
Definition: path.c:852
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1504
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
Definition: pidl.c:1358
#define SHGDFIL_FINDDATA
Definition: shlobj.h:1459
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
DWORD dwFileAttributes
Definition: minwinbase.h:283

Referenced by _EnsureFolderDefaultsBag().

◆ _PruneMRUTree()

void CViewStatePropertyBag::_PruneMRUTree ( )
protected

Definition at line 1809 of file propbag.cpp.

1810{
1812 if (!hKey)
1813 return;
1814
1815 CComPtr<IMruPidlList> pMruList;
1816 HRESULT hr = ::CoCreateInstance(CLSID_MruPidlList, NULL, CLSCTX_INPROC_SERVER,
1817 IID_IMruPidlList, (void**)&pMruList);
1818 if (SUCCEEDED(hr))
1819 {
1820 hr = pMruList->InitList(200, hKey, L"BagMRU");
1821 if (SUCCEEDED(hr))
1822 pMruList->PruneKids(m_pidl);
1823 }
1824
1826}

Referenced by _EnsureWriteBag().

◆ _ReadFolderDefaultsBag()

HRESULT CViewStatePropertyBag::_ReadFolderDefaultsBag ( LPCWSTR  pszPropName,
VARIANT pvari,
IErrorLog pErrorLog 
)
protected

Definition at line 1749 of file propbag.cpp.

1753{
1755 return E_FAIL;
1756
1757 return m_pFolderDefaultsBag->Read(pszPropName, pvari, pErrorLog);
1758}
BOOL _EnsureFolderDefaultsBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1676
const GUID IID_IPropertyBag

Referenced by Read().

◆ _ReadGlobalDefaultsBag()

HRESULT CViewStatePropertyBag::_ReadGlobalDefaultsBag ( LPCWSTR  pszPropName,
VARIANT pvari,
IErrorLog pErrorLog 
)
protected

Definition at line 1761 of file propbag.cpp.

1765{
1767 return E_FAIL;
1768
1769 return m_pGlobalDefaultsBag->Read(pszPropName, pvari, pErrorLog);
1770}
BOOL _EnsureGlobalDefaultsBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1690

Referenced by Read().

◆ _ReadInheritBag()

HRESULT CViewStatePropertyBag::_ReadInheritBag ( LPCWSTR  pszPropName,
VARIANT pvari,
IErrorLog pErrorLog 
)
protected

Definition at line 1713 of file propbag.cpp.

1717{
1719 return E_FAIL;
1720
1721 return m_pInheritBag->Read(pszPropName, pvari, pErrorLog);
1722}
BOOL _EnsureInheritBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1646

Referenced by Read().

◆ _ReadPidlBag()

HRESULT CViewStatePropertyBag::_ReadPidlBag ( LPCWSTR  pszPropName,
VARIANT pvari,
IErrorLog pErrorLog 
)
protected

Definition at line 1701 of file propbag.cpp.

1705{
1707 return E_FAIL;
1708
1709 return m_pPidlBag->Read(pszPropName, pvari, pErrorLog);
1710}
BOOL _EnsurePidlBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1636

Referenced by Read().

◆ _ReadUpgradeBag()

HRESULT CViewStatePropertyBag::_ReadUpgradeBag ( LPCWSTR  pszPropName,
VARIANT pvari,
IErrorLog pErrorLog 
)
protected

Definition at line 1725 of file propbag.cpp.

1729{
1731 return E_FAIL;
1732
1733 return m_pUpgradeBag->Read(pszPropName, pvari, pErrorLog);
1734}
BOOL _EnsureUpgradeBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1656

Referenced by Read().

◆ _ReadUserDefaultsBag()

HRESULT CViewStatePropertyBag::_ReadUserDefaultsBag ( LPCWSTR  pszPropName,
VARIANT pvari,
IErrorLog pErrorLog 
)
protected

Definition at line 1737 of file propbag.cpp.

1741{
1743 return E_FAIL;
1744
1745 return m_pUserDefaultsBag->Read(pszPropName, pvari, pErrorLog);
1746}
BOOL _EnsureUserDefaultsBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1666

Referenced by Read().

◆ _ResetTryAgainFlag()

void CViewStatePropertyBag::_ResetTryAgainFlag ( )
protected

◆ Init()

HRESULT CViewStatePropertyBag::Init ( _In_opt_ LPCITEMIDLIST  pidl,
_In_opt_ LPCWSTR  pszPath,
_In_ DWORD  dwVspbFlags 
)

Definition at line 1329 of file propbag.cpp.

1333{
1334 if (pidl)
1335 {
1336 m_pidl = ILClone(pidl);
1337 if (!m_pidl)
1338 return E_OUTOFMEMORY;
1339 }
1340
1341 if (pszPath)
1342 {
1343 m_pszPath = StrDupW(pszPath);
1344 if (!m_pszPath)
1345 return E_OUTOFMEMORY;
1346
1347 m_dwVspbFlags = dwVspbFlags;
1348 }
1349
1350 return S_OK;
1351}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
WCHAR *WINAPI StrDupW(const WCHAR *str)
Definition: string.c:317
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238

◆ IsSameBag()

BOOL CViewStatePropertyBag::IsSameBag ( LPCITEMIDLIST  pidl,
LPCWSTR  pszPath,
DWORD  dwVspbFlags 
) const

Definition at line 1361 of file propbag.cpp.

1362{
1363 return (dwVspbFlags == m_dwVspbFlags && StrCmpW(pszPath, m_pszPath) == 0 && _IsSamePidl(pidl));
1364}
BOOL _IsSamePidl(LPCITEMIDLIST pidlOther) const
Definition: propbag.cpp:1353

◆ Read()

STDMETHODIMP CViewStatePropertyBag::Read ( _In_z_ LPCWSTR  pszPropName,
_Inout_ VARIANT pvari,
_Inout_opt_ IErrorLog pErrorLog 
)
override

Definition at line 1773 of file propbag.cpp.

1777{
1779 {
1781 return E_FAIL;
1782
1783 return m_pReadBag->Read(pszPropName, pvari, pErrorLog);
1784 }
1785
1786 HRESULT hr = _ReadPidlBag(pszPropName, pvari, pErrorLog);
1787 if (SUCCEEDED(hr))
1788 return hr;
1789
1790 hr = _ReadInheritBag(pszPropName, pvari, pErrorLog);
1791 if (SUCCEEDED(hr))
1792 return hr;
1793
1794 hr = _ReadUpgradeBag(pszPropName, pvari, pErrorLog);
1795 if (SUCCEEDED(hr))
1796 return hr;
1797
1798 hr = _ReadUserDefaultsBag(pszPropName, pvari, pErrorLog);
1799 if (SUCCEEDED(hr))
1800 return hr;
1801
1802 hr = _ReadFolderDefaultsBag(pszPropName, pvari, pErrorLog);
1803 if (SUCCEEDED(hr))
1804 return hr;
1805
1806 return _ReadGlobalDefaultsBag(pszPropName, pvari, pErrorLog);
1807}
HRESULT _ReadGlobalDefaultsBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
Definition: propbag.cpp:1761
HRESULT _ReadInheritBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
Definition: propbag.cpp:1713
BOOL _EnsureReadBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1626
HRESULT _ReadPidlBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
Definition: propbag.cpp:1701
HRESULT _ReadFolderDefaultsBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
Definition: propbag.cpp:1749
HRESULT _ReadUpgradeBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
Definition: propbag.cpp:1725
HRESULT _ReadUserDefaultsBag(LPCWSTR pszPropName, VARIANT *pvari, IErrorLog *pErrorLog)
Definition: propbag.cpp:1737

◆ Write()

STDMETHODIMP CViewStatePropertyBag::Write ( _In_z_ LPCWSTR  pszPropName,
_In_ VARIANT pvari 
)
override

Definition at line 1844 of file propbag.cpp.

1845{
1847 return E_FAIL;
1848
1849 return m_pWriteBag->Write(pszPropName, pvari);
1850}
BOOL _EnsureWriteBag(DWORD dwMode, REFIID riid)
Definition: propbag.cpp:1828
#define STGM_WRITE
Definition: objbase.h:937

Member Data Documentation

◆ m_bFolderDefaultsBag

BOOL CViewStatePropertyBag::m_bFolderDefaultsBag = FALSE
protected

Definition at line 1236 of file propbag.cpp.

Referenced by _EnsureFolderDefaultsBag(), and _ResetTryAgainFlag().

◆ m_bGlobalDefaultsBag

BOOL CViewStatePropertyBag::m_bGlobalDefaultsBag = FALSE
protected

Definition at line 1237 of file propbag.cpp.

Referenced by _EnsureGlobalDefaultsBag(), and _ResetTryAgainFlag().

◆ m_bInheritBag

BOOL CViewStatePropertyBag::m_bInheritBag = FALSE
protected

Definition at line 1234 of file propbag.cpp.

Referenced by _EnsureInheritBag(), and _ResetTryAgainFlag().

◆ m_bPidlBag

BOOL CViewStatePropertyBag::m_bPidlBag = FALSE
protected

Definition at line 1232 of file propbag.cpp.

Referenced by _EnsurePidlBag(), and _ResetTryAgainFlag().

◆ m_bReadBag

BOOL CViewStatePropertyBag::m_bReadBag = FALSE
protected

Definition at line 1238 of file propbag.cpp.

Referenced by _EnsureReadBag(), and _ResetTryAgainFlag().

◆ m_bUpgradeBag

BOOL CViewStatePropertyBag::m_bUpgradeBag = FALSE
protected

Definition at line 1233 of file propbag.cpp.

Referenced by _EnsureUpgradeBag().

◆ m_bUserDefaultsBag

BOOL CViewStatePropertyBag::m_bUserDefaultsBag = FALSE
protected

Definition at line 1235 of file propbag.cpp.

Referenced by _EnsureUserDefaultsBag(), and _ResetTryAgainFlag().

◆ m_bWriteBag

BOOL CViewStatePropertyBag::m_bWriteBag = FALSE
protected

Definition at line 1239 of file propbag.cpp.

Referenced by _EnsureWriteBag().

◆ m_dwVspbFlags

◆ m_pFolderDefaultsBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pFolderDefaultsBag
protected

Definition at line 1228 of file propbag.cpp.

Referenced by _EnsureFolderDefaultsBag(), and _ReadFolderDefaultsBag().

◆ m_pGlobalDefaultsBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pGlobalDefaultsBag
protected

Definition at line 1229 of file propbag.cpp.

Referenced by _EnsureGlobalDefaultsBag(), and _ReadGlobalDefaultsBag().

◆ m_pidl

◆ m_pInheritBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pInheritBag
protected

Definition at line 1226 of file propbag.cpp.

Referenced by _EnsureInheritBag(), and _ReadInheritBag().

◆ m_pPidlBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pPidlBag
protected

Definition at line 1224 of file propbag.cpp.

Referenced by _EnsurePidlBag(), and _ReadPidlBag().

◆ m_pReadBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pReadBag
protected

Definition at line 1230 of file propbag.cpp.

Referenced by _EnsureReadBag(), and Read().

◆ m_pszPath

◆ m_pUpgradeBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pUpgradeBag
protected

Definition at line 1225 of file propbag.cpp.

Referenced by _EnsureUpgradeBag(), and _ReadUpgradeBag().

◆ m_pUserDefaultsBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pUserDefaultsBag
protected

Definition at line 1227 of file propbag.cpp.

Referenced by _EnsureUserDefaultsBag(), and _ReadUserDefaultsBag().

◆ m_pWriteBag

CComPtr<IPropertyBag> CViewStatePropertyBag::m_pWriteBag
protected

Definition at line 1231 of file propbag.cpp.

Referenced by _EnsureWriteBag(), and Write().


The documentation for this class was generated from the following file: