Revert tree-restructure attempt: r66583, r66582, r66581, r66578, sauf ntdll changes...
[reactos.git] / reactos / dll / shellext / ntobjshex / ntobjns.h
1 /*
2 * PROJECT: ReactOS shell extensions
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll\shellext\ntobjshex\ntobjns.h
5 * PURPOSE: NT Object Namespace shell extension
6 * PROGRAMMERS: David Quintana <gigaherz@gmail.com>
7 */
8 #pragma once
9
10 extern const GUID CLSID_NtObjectFolder;
11
12 class CNtObjectPidlManager;
13
14 class CNtObjectFolder :
15 public CComCoClass<CNtObjectFolder, &CLSID_NtObjectFolder>,
16 public CComObjectRootEx<CComMultiThreadModelNoCS>,
17 public IShellFolder2,
18 public IPersistFolder2
19 {
20 CNtObjectPidlManager * m_PidlManager;
21
22 WCHAR m_NtPath[MAX_PATH];
23
24 LPITEMIDLIST m_shellPidl;
25
26 public:
27
28 CNtObjectFolder();
29 virtual ~CNtObjectFolder();
30
31 CNtObjectPidlManager& GetManager() { return *m_PidlManager; }
32
33 // IShellFolder
34 virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
35 HWND hwndOwner,
36 LPBC pbcReserved,
37 LPOLESTR lpszDisplayName,
38 ULONG *pchEaten,
39 LPITEMIDLIST *ppidl,
40 ULONG *pdwAttributes);
41
42 virtual HRESULT STDMETHODCALLTYPE EnumObjects(
43 HWND hwndOwner,
44 SHCONTF grfFlags,
45 IEnumIDList **ppenumIDList);
46
47 virtual HRESULT STDMETHODCALLTYPE BindToObject(
48 LPCITEMIDLIST pidl,
49 LPBC pbcReserved,
50 REFIID riid,
51 void **ppvOut);
52
53 virtual HRESULT STDMETHODCALLTYPE BindToStorage(
54 LPCITEMIDLIST pidl,
55 LPBC pbcReserved,
56 REFIID riid,
57 void **ppvObj);
58
59 virtual HRESULT STDMETHODCALLTYPE CompareIDs(
60 LPARAM lParam,
61 LPCITEMIDLIST pidl1,
62 LPCITEMIDLIST pidl2);
63
64 virtual HRESULT STDMETHODCALLTYPE CreateViewObject(
65 HWND hwndOwner,
66 REFIID riid,
67 void **ppvOut);
68
69 virtual HRESULT STDMETHODCALLTYPE GetAttributesOf(
70 UINT cidl,
71 PCUITEMID_CHILD_ARRAY apidl,
72 SFGAOF *rgfInOut);
73
74 virtual HRESULT STDMETHODCALLTYPE GetUIObjectOf(
75 HWND hwndOwner,
76 UINT cidl,
77 PCUITEMID_CHILD_ARRAY apidl,
78 REFIID riid,
79 UINT *prgfInOut,
80 void **ppvOut);
81
82 virtual HRESULT STDMETHODCALLTYPE GetDisplayNameOf(
83 LPCITEMIDLIST pidl,
84 SHGDNF uFlags,
85 STRRET *lpName);
86
87 virtual HRESULT STDMETHODCALLTYPE SetNameOf(
88 HWND hwnd,
89 LPCITEMIDLIST pidl,
90 LPCOLESTR lpszName,
91 SHGDNF uFlags,
92 LPITEMIDLIST *ppidlOut);
93
94 // IShellFolder2
95 virtual HRESULT STDMETHODCALLTYPE GetDefaultSearchGUID(
96 GUID *lpguid);
97
98 virtual HRESULT STDMETHODCALLTYPE EnumSearches(
99 IEnumExtraSearch **ppenum);
100
101 virtual HRESULT STDMETHODCALLTYPE GetDefaultColumn(
102 DWORD dwReserved,
103 ULONG *pSort,
104 ULONG *pDisplay);
105
106 virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnState(
107 UINT iColumn,
108 SHCOLSTATEF *pcsFlags);
109
110 virtual HRESULT STDMETHODCALLTYPE GetDetailsEx(
111 LPCITEMIDLIST pidl,
112 const SHCOLUMNID *pscid,
113 VARIANT *pv);
114
115 virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
116 LPCITEMIDLIST pidl,
117 UINT iColumn,
118 SHELLDETAILS *psd);
119
120 virtual HRESULT STDMETHODCALLTYPE MapColumnToSCID(
121 UINT iColumn,
122 SHCOLUMNID *pscid);
123
124 // IPersist
125 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *lpClassId);
126
127 // IPersistFolder
128 virtual HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl);
129
130 // IPersistFolder2
131 virtual HRESULT STDMETHODCALLTYPE GetCurFolder(LPITEMIDLIST * pidl);
132
133 // Internal
134 HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl, PCWSTR ntPath);
135
136 DECLARE_REGISTRY_RESOURCEID(IDR_NTOBJECTFOLDER)
137 DECLARE_NOT_AGGREGATABLE(CNtObjectFolder)
138 DECLARE_PROTECT_FINAL_CONSTRUCT()
139
140 BEGIN_COM_MAP(CNtObjectFolder)
141 COM_INTERFACE_ENTRY_IID(IID_IShellFolder, IShellFolder)
142 COM_INTERFACE_ENTRY_IID(IID_IShellFolder2, IShellFolder2)
143 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
144 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder, IPersistFolder)
145 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2, IPersistFolder2)
146 END_COM_MAP()
147
148 };