2 * PROJECT: ReactOS shell extensions
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/shellext/ntobjshex/regfolder.h
5 * PURPOSE: NT Object Namespace shell extension
6 * PROGRAMMERS: David Quintana <gigaherz@gmail.com>
10 extern const GUID CLSID_RegistryFolder
;
12 class CRegistryFolderExtractIcon
:
13 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
16 PCIDLIST_ABSOLUTE m_pcidlFolder
;
17 PCITEMID_CHILD m_pcidlChild
;
20 CRegistryFolderExtractIcon();
22 virtual ~CRegistryFolderExtractIcon();
24 HRESULT
Initialize(LPCWSTR ntPath
, PCIDLIST_ABSOLUTE parent
, UINT cidl
, PCUITEMID_CHILD_ARRAY apidl
);
26 virtual HRESULT STDMETHODCALLTYPE
GetIconLocation(
33 virtual HRESULT STDMETHODCALLTYPE
Extract(
40 DECLARE_NOT_AGGREGATABLE(CRegistryFolderExtractIcon
)
41 DECLARE_PROTECT_FINAL_CONSTRUCT()
43 BEGIN_COM_MAP(CRegistryFolderExtractIcon
)
44 COM_INTERFACE_ENTRY_IID(IID_IExtractIconW
, IExtractIconW
)
49 class CRegistryFolder
:
50 public CComCoClass
<CRegistryFolder
, &CLSID_RegistryFolder
>,
51 public CCommonFolder
<CRegistryFolder
, RegPidlEntry
, CRegistryFolderExtractIcon
>
56 DECLARE_REGISTRY_RESOURCEID(IDR_REGISTRYFOLDER
)
59 virtual ~CRegistryFolder();
62 virtual HRESULT STDMETHODCALLTYPE
EnumObjects(
65 IEnumIDList
**ppenumIDList
);
68 virtual HRESULT STDMETHODCALLTYPE
InternalBindToObject(
70 const RegPidlEntry
* info
,
73 LPITEMIDLIST fullPidl
,
75 IShellFolder
** ppsfChild
);
78 virtual HRESULT STDMETHODCALLTYPE
GetDefaultColumnState(
80 SHCOLSTATEF
*pcsFlags
);
82 virtual HRESULT STDMETHODCALLTYPE
GetDetailsEx(
84 const SHCOLUMNID
*pscid
,
87 virtual HRESULT STDMETHODCALLTYPE
GetDetailsOf(
92 virtual HRESULT STDMETHODCALLTYPE
MapColumnToSCID(
97 virtual HRESULT STDMETHODCALLTYPE
Initialize(PCIDLIST_ABSOLUTE pidl
);
100 virtual HRESULT STDMETHODCALLTYPE
Initialize(PCIDLIST_ABSOLUTE pidl
, PCWSTR ntPath
, HKEY hRoot
);
103 virtual HRESULT STDMETHODCALLTYPE
CompareIDs(LPARAM lParam
, const RegPidlEntry
* first
, const RegPidlEntry
* second
);
104 virtual ULONG STDMETHODCALLTYPE
ConvertAttributes(const RegPidlEntry
* entry
, PULONG inMask
);
105 virtual BOOL STDMETHODCALLTYPE
IsFolder(const RegPidlEntry
* info
);
107 virtual HRESULT
GetInfoFromPidl(LPCITEMIDLIST pcidl
, const RegPidlEntry
** pentry
);
109 HRESULT
FormatValueData(DWORD contentType
, PVOID td
, DWORD contentsLength
, PCWSTR
* strContents
);
111 HRESULT
FormatContentsForDisplay(const RegPidlEntry
* info
, HKEY rootKey
, LPCWSTR ntPath
, PCWSTR
* strContents
);