mirror of
https://github.com/reactos/reactos.git
synced 2024-07-01 02:10:07 +00:00
[NTOBJSHEX]
* Now that we use lazy enumeration instead of keeping a full list of all items, I was able to simplify a few things. svn path=/trunk/; revision=68832
This commit is contained in:
parent
18183f23d3
commit
73a55f80e1
|
@ -131,28 +131,9 @@ public:
|
|||
|
||||
};
|
||||
|
||||
class CNtObjectPidlManager
|
||||
class CNtObjectPidlHelper
|
||||
{
|
||||
private:
|
||||
PWSTR m_ntPath;
|
||||
|
||||
public:
|
||||
CNtObjectPidlManager() :
|
||||
m_ntPath(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
~CNtObjectPidlManager()
|
||||
{
|
||||
}
|
||||
|
||||
HRESULT Initialize(PWSTR ntPath)
|
||||
{
|
||||
m_ntPath = ntPath;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT CompareIDs(LPARAM lParam, const NtPidlEntry * first, const NtPidlEntry * second)
|
||||
{
|
||||
if ((lParam & 0xFFFF0000) == SHCIDS_ALLFIELDS)
|
||||
|
@ -285,7 +266,7 @@ public:
|
|||
return flags & mask;
|
||||
}
|
||||
|
||||
BOOL IsFolder(LPCITEMIDLIST pcidl)
|
||||
static BOOL IsFolder(LPCITEMIDLIST pcidl)
|
||||
{
|
||||
NtPidlEntry * entry = (NtPidlEntry*) &(pcidl->mkid);
|
||||
if ((entry->cb < sizeof(NtPidlEntry)) || (entry->magic != NT_OBJECT_PIDL_MAGIC))
|
||||
|
@ -296,7 +277,7 @@ public:
|
|||
(entry->objectType == KEY_OBJECT);
|
||||
}
|
||||
|
||||
HRESULT GetInfoFromPidl(LPCITEMIDLIST pcidl, const NtPidlEntry ** pentry)
|
||||
static HRESULT GetInfoFromPidl(LPCITEMIDLIST pcidl, const NtPidlEntry ** pentry)
|
||||
{
|
||||
NtPidlEntry * entry = (NtPidlEntry*) &(pcidl->mkid);
|
||||
|
||||
|
@ -321,7 +302,6 @@ public:
|
|||
// CNtObjectFolder
|
||||
|
||||
CNtObjectFolder::CNtObjectFolder() :
|
||||
m_PidlManager(NULL),
|
||||
m_shellPidl(NULL)
|
||||
{
|
||||
}
|
||||
|
@ -330,8 +310,6 @@ CNtObjectFolder::~CNtObjectFolder()
|
|||
{
|
||||
if (m_shellPidl)
|
||||
ILFree(m_shellPidl);
|
||||
if (m_PidlManager)
|
||||
delete m_PidlManager;
|
||||
}
|
||||
|
||||
// IShellFolder
|
||||
|
@ -370,7 +348,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::ParseDisplayName(
|
|||
if (hr != S_OK)
|
||||
break;
|
||||
|
||||
hr = m_PidlManager->GetInfoFromPidl(*ppidl, &info);
|
||||
hr = CNtObjectPidlHelper::GetInfoFromPidl(*ppidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -389,7 +367,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::ParseDisplayName(
|
|||
*pchEaten = wcslen(info->entryName);
|
||||
|
||||
if (pdwAttributes)
|
||||
*pdwAttributes = m_PidlManager->ConvertAttributes(info, pdwAttributes);
|
||||
*pdwAttributes = CNtObjectPidlHelper::ConvertAttributes(info, pdwAttributes);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
|
@ -413,7 +391,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::BindToObject(
|
|||
|
||||
if (IsEqualIID(riid, IID_IShellFolder))
|
||||
{
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CNtObjectPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -514,7 +492,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::CompareIDs(
|
|||
{
|
||||
TRACE("CompareIDs\n");
|
||||
|
||||
HRESULT hr = m_PidlManager->CompareIDs(lParam, pidl1, pidl2);
|
||||
HRESULT hr = CNtObjectPidlHelper::CompareIDs(lParam, pidl1, pidl2);
|
||||
if (hr != S_OK)
|
||||
return hr;
|
||||
|
||||
|
@ -581,12 +559,12 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::GetAttributesOf(
|
|||
{
|
||||
PCUITEMID_CHILD pidl = apidl[i];
|
||||
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CNtObjectPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
// Update attributes.
|
||||
*rgfInOut = m_PidlManager->ConvertAttributes(info, rgfInOut);
|
||||
*rgfInOut = CNtObjectPidlHelper::ConvertAttributes(info, rgfInOut);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
|
@ -612,7 +590,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::GetUIObjectOf(
|
|||
HKEY keys[1];
|
||||
|
||||
int nkeys = _countof(keys);
|
||||
if (cidl == 1 && m_PidlManager->IsFolder(apidl[0]))
|
||||
if (cidl == 1 && CNtObjectPidlHelper::IsFolder(apidl[0]))
|
||||
{
|
||||
res = RegOpenKey(HKEY_CLASSES_ROOT, L"Folder", keys + 0);
|
||||
if (!NT_SUCCESS(res))
|
||||
|
@ -642,7 +620,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::GetUIObjectOf(
|
|||
|
||||
if (IsEqualIID(riid, IID_IQueryAssociations))
|
||||
{
|
||||
if (cidl == 1 && m_PidlManager->IsFolder(apidl[0]))
|
||||
if (cidl == 1 && CNtObjectPidlHelper::IsFolder(apidl[0]))
|
||||
{
|
||||
CComPtr<IQueryAssociations> pqa;
|
||||
HRESULT hr = AssocCreate(CLSID_QueryAssociations, IID_PPV_ARG(IQueryAssociations, &pqa));
|
||||
|
@ -669,7 +647,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::GetDisplayNameOf(
|
|||
|
||||
TRACE("GetDisplayNameOf %p\n", pidl);
|
||||
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CNtObjectPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -748,16 +726,9 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::Initialize(LPCITEMIDLIST pidl)
|
|||
{
|
||||
m_shellPidl = ILClone(pidl);
|
||||
|
||||
PCWSTR ntPath = L"\\";
|
||||
StringCbCopy(m_NtPath, _countof(m_NtPath), L"\\");
|
||||
|
||||
if (!m_PidlManager)
|
||||
{
|
||||
m_PidlManager = new CNtObjectPidlManager();
|
||||
|
||||
StringCbCopy(m_NtPath, _countof(m_NtPath), ntPath);
|
||||
}
|
||||
|
||||
return m_PidlManager->Initialize(m_NtPath);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// Internal
|
||||
|
@ -765,11 +736,9 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::Initialize(LPCITEMIDLIST pidl, PCWSTR
|
|||
{
|
||||
m_shellPidl = ILClone(pidl);
|
||||
|
||||
if (!m_PidlManager)
|
||||
m_PidlManager = new CNtObjectPidlManager();
|
||||
|
||||
StringCbCopy(m_NtPath, _countof(m_NtPath), ntPath);
|
||||
return m_PidlManager->Initialize(m_NtPath);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// IPersistFolder2
|
||||
|
@ -840,7 +809,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::GetDetailsEx(
|
|||
|
||||
if (pidl)
|
||||
{
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CNtObjectPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -907,7 +876,7 @@ HRESULT STDMETHODCALLTYPE CNtObjectFolder::GetDetailsOf(
|
|||
|
||||
if (pidl)
|
||||
{
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CNtObjectPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
|
||||
extern const GUID CLSID_NtObjectFolder;
|
||||
|
||||
class CNtObjectPidlManager;
|
||||
|
||||
class CNtObjectFolder :
|
||||
public CComCoClass<CNtObjectFolder, &CLSID_NtObjectFolder>,
|
||||
public CComObjectRootEx<CComMultiThreadModelNoCS>,
|
||||
|
@ -18,8 +16,6 @@ class CNtObjectFolder :
|
|||
public IPersistFolder2,
|
||||
public IShellFolderViewCB
|
||||
{
|
||||
CNtObjectPidlManager * m_PidlManager;
|
||||
|
||||
WCHAR m_NtPath[MAX_PATH];
|
||||
|
||||
LPITEMIDLIST m_shellPidl;
|
||||
|
@ -29,8 +25,6 @@ public:
|
|||
CNtObjectFolder();
|
||||
virtual ~CNtObjectFolder();
|
||||
|
||||
CNtObjectPidlManager& GetManager() { return *m_PidlManager; }
|
||||
|
||||
// IShellFolder
|
||||
virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
|
||||
HWND hwndOwner,
|
||||
|
|
|
@ -125,44 +125,9 @@ public:
|
|||
|
||||
};
|
||||
|
||||
class CRegistryPidlManager
|
||||
class CRegistryPidlHelper
|
||||
{
|
||||
private:
|
||||
PWSTR m_ntPath;
|
||||
HKEY m_hRoot;
|
||||
|
||||
int DpaDeleteCallback(RegPidlEntry * info)
|
||||
{
|
||||
CoTaskMemFree(info);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int CALLBACK s_DpaDeleteCallback(void *pItem, void *pData)
|
||||
{
|
||||
CRegistryPidlManager * mf = (CRegistryPidlManager*) pData;
|
||||
RegPidlEntry * item = (RegPidlEntry*) pItem;
|
||||
return mf->DpaDeleteCallback(item);
|
||||
}
|
||||
|
||||
public:
|
||||
CRegistryPidlManager() :
|
||||
m_ntPath(NULL),
|
||||
m_hRoot(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
~CRegistryPidlManager()
|
||||
{
|
||||
}
|
||||
|
||||
HRESULT Initialize(PWSTR ntPath, HKEY hRoot)
|
||||
{
|
||||
m_ntPath = ntPath;
|
||||
m_hRoot = hRoot;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT CompareIDs(LPARAM lParam, const RegPidlEntry * first, const RegPidlEntry * second)
|
||||
{
|
||||
if ((lParam & 0xFFFF0000) == SHCIDS_ALLFIELDS)
|
||||
|
@ -290,7 +255,7 @@ public:
|
|||
return flags & mask;
|
||||
}
|
||||
|
||||
BOOL IsFolder(LPCITEMIDLIST pcidl)
|
||||
static BOOL IsFolder(LPCITEMIDLIST pcidl)
|
||||
{
|
||||
RegPidlEntry * entry = (RegPidlEntry*) &(pcidl->mkid);
|
||||
if ((entry->cb < sizeof(RegPidlEntry)) || (entry->magic != REGISTRY_PIDL_MAGIC))
|
||||
|
@ -300,7 +265,7 @@ public:
|
|||
(entry->entryType == REG_ENTRY_ROOT);
|
||||
}
|
||||
|
||||
HRESULT GetInfoFromPidl(LPCITEMIDLIST pcidl, const RegPidlEntry ** pentry)
|
||||
static HRESULT GetInfoFromPidl(LPCITEMIDLIST pcidl, const RegPidlEntry ** pentry)
|
||||
{
|
||||
RegPidlEntry * entry = (RegPidlEntry*) &(pcidl->mkid);
|
||||
|
||||
|
@ -371,7 +336,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
HRESULT FormatContentsForDisplay(const RegPidlEntry * info, PCWSTR * strContents)
|
||||
static HRESULT FormatContentsForDisplay(const RegPidlEntry * info, LPCWSTR ntPath, PCWSTR * strContents)
|
||||
{
|
||||
PVOID td = (((PBYTE) info) + FIELD_OFFSET(RegPidlEntry, entryName) + info->entryNameLength + sizeof(WCHAR));
|
||||
|
||||
|
@ -386,7 +351,7 @@ public:
|
|||
{
|
||||
PVOID valueData;
|
||||
DWORD valueLength;
|
||||
HRESULT hr = ReadRegistryValue(NULL, m_ntPath, info->entryName, &valueData, &valueLength);
|
||||
HRESULT hr = ReadRegistryValue(NULL, ntPath, info->entryName, &valueData, &valueLength);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
{
|
||||
PCWSTR strEmpty = L"(Error reading value)";
|
||||
|
@ -429,7 +394,6 @@ public:
|
|||
// CRegistryFolder
|
||||
|
||||
CRegistryFolder::CRegistryFolder() :
|
||||
m_PidlManager(NULL),
|
||||
m_shellPidl(NULL)
|
||||
{
|
||||
}
|
||||
|
@ -438,8 +402,6 @@ CRegistryFolder::~CRegistryFolder()
|
|||
{
|
||||
if (m_shellPidl)
|
||||
ILFree(m_shellPidl);
|
||||
if (m_PidlManager)
|
||||
delete m_PidlManager;
|
||||
}
|
||||
|
||||
// IShellFolder
|
||||
|
@ -480,7 +442,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::ParseDisplayName(
|
|||
if (hr != S_OK)
|
||||
break;
|
||||
|
||||
hr = m_PidlManager->GetInfoFromPidl(*ppidl, &info);
|
||||
hr = CRegistryPidlHelper::GetInfoFromPidl(*ppidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -499,7 +461,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::ParseDisplayName(
|
|||
*pchEaten = wcslen(info->entryName);
|
||||
|
||||
if (pdwAttributes)
|
||||
*pdwAttributes = m_PidlManager->ConvertAttributes(info, pdwAttributes);
|
||||
*pdwAttributes = CRegistryPidlHelper::ConvertAttributes(info, pdwAttributes);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
|
@ -530,7 +492,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::BindToObject(
|
|||
|
||||
if (IsEqualIID(riid, IID_IShellFolder))
|
||||
{
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CRegistryPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -586,7 +548,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::CompareIDs(
|
|||
{
|
||||
TRACE("CompareIDs\n");
|
||||
|
||||
HRESULT hr = m_PidlManager->CompareIDs(lParam, pidl1, pidl2);
|
||||
HRESULT hr = CRegistryPidlHelper::CompareIDs(lParam, pidl1, pidl2);
|
||||
if (hr != S_OK)
|
||||
return hr;
|
||||
|
||||
|
@ -653,12 +615,12 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetAttributesOf(
|
|||
{
|
||||
PCUITEMID_CHILD pidl = apidl[i];
|
||||
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CRegistryPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
// Update attributes.
|
||||
*rgfInOut = m_PidlManager->ConvertAttributes(info, rgfInOut);
|
||||
*rgfInOut = CRegistryPidlHelper::ConvertAttributes(info, rgfInOut);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
|
@ -684,7 +646,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetUIObjectOf(
|
|||
HKEY keys[1];
|
||||
|
||||
int nkeys = _countof(keys);
|
||||
if (cidl == 1 && m_PidlManager->IsFolder(apidl[0]))
|
||||
if (cidl == 1 && CRegistryPidlHelper::IsFolder(apidl[0]))
|
||||
{
|
||||
res = RegOpenKey(HKEY_CLASSES_ROOT, L"Folder", keys + 0);
|
||||
if (!NT_SUCCESS(res))
|
||||
|
@ -714,7 +676,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetUIObjectOf(
|
|||
|
||||
if (IsEqualIID(riid, IID_IQueryAssociations))
|
||||
{
|
||||
if (cidl == 1 && m_PidlManager->IsFolder(apidl[0]))
|
||||
if (cidl == 1 && CRegistryPidlHelper::IsFolder(apidl[0]))
|
||||
{
|
||||
CComPtr<IQueryAssociations> pqa;
|
||||
HRESULT hr = AssocCreate(CLSID_QueryAssociations, IID_PPV_ARG(IQueryAssociations, &pqa));
|
||||
|
@ -741,7 +703,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetDisplayNameOf(
|
|||
|
||||
TRACE("GetDisplayNameOf %p\n", pidl);
|
||||
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CRegistryPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -821,16 +783,8 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::Initialize(LPCITEMIDLIST pidl)
|
|||
m_shellPidl = ILClone(pidl);
|
||||
m_hRoot = NULL;
|
||||
|
||||
PCWSTR ntPath = L"";
|
||||
|
||||
if (!m_PidlManager)
|
||||
{
|
||||
m_PidlManager = new CRegistryPidlManager();
|
||||
|
||||
StringCbCopy(m_NtPath, _countof(m_NtPath), ntPath);
|
||||
}
|
||||
|
||||
return m_PidlManager->Initialize(m_NtPath, m_hRoot);
|
||||
StringCbCopy(m_NtPath, _countof(m_NtPath), L"");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// Internal
|
||||
|
@ -839,11 +793,8 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::Initialize(LPCITEMIDLIST pidl, PCWSTR
|
|||
m_shellPidl = ILClone(pidl);
|
||||
m_hRoot = hRoot;
|
||||
|
||||
if (!m_PidlManager)
|
||||
m_PidlManager = new CRegistryPidlManager();
|
||||
|
||||
StringCbCopy(m_NtPath, _countof(m_NtPath), ntPath);
|
||||
return m_PidlManager->Initialize(m_NtPath, m_hRoot);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// IPersistFolder2
|
||||
|
@ -914,7 +865,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetDetailsEx(
|
|||
|
||||
if (pidl)
|
||||
{
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CRegistryPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -953,7 +904,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetDetailsEx(
|
|||
{
|
||||
PCWSTR strValueContents;
|
||||
|
||||
hr = m_PidlManager->FormatContentsForDisplay(info, &strValueContents);
|
||||
hr = CRegistryPidlHelper::FormatContentsForDisplay(info, m_NtPath, &strValueContents);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -987,7 +938,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetDetailsOf(
|
|||
|
||||
if (pidl)
|
||||
{
|
||||
HRESULT hr = m_PidlManager->GetInfoFromPidl(pidl, &info);
|
||||
HRESULT hr = CRegistryPidlHelper::GetInfoFromPidl(pidl, &info);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -1029,7 +980,7 @@ HRESULT STDMETHODCALLTYPE CRegistryFolder::GetDetailsOf(
|
|||
|
||||
PCWSTR strValueContents;
|
||||
|
||||
hr = m_PidlManager->FormatContentsForDisplay(info, &strValueContents);
|
||||
hr = CRegistryPidlHelper::FormatContentsForDisplay(info, m_NtPath, &strValueContents);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
|
||||
extern const GUID CLSID_RegistryFolder;
|
||||
|
||||
class CRegistryPidlManager;
|
||||
|
||||
class CRegistryFolder :
|
||||
public CComCoClass<CRegistryFolder, &CLSID_RegistryFolder>,
|
||||
public CComObjectRootEx<CComMultiThreadModelNoCS>,
|
||||
|
@ -19,8 +17,6 @@ class CRegistryFolder :
|
|||
public IPersistFolder2,
|
||||
public IShellFolderViewCB
|
||||
{
|
||||
CRegistryPidlManager * m_PidlManager;
|
||||
|
||||
HKEY m_hRoot;
|
||||
WCHAR m_NtPath[MAX_PATH];
|
||||
|
||||
|
@ -31,8 +27,6 @@ public:
|
|||
CRegistryFolder();
|
||||
virtual ~CRegistryFolder();
|
||||
|
||||
CRegistryPidlManager& GetManager() { return *m_PidlManager; }
|
||||
|
||||
// IShellFolder
|
||||
virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
|
||||
HWND hwndOwner,
|
||||
|
|
Loading…
Reference in a new issue