[STORAHCI] Merge Storport Miniport driver by Aman Priyadarshi in GSoC.
[reactos.git] / reactos / dll / shellext / ntobjshex / ntobjfolder.h
1 /*
2 * PROJECT: ReactOS shell extensions
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/shellext/ntobjshex/ntobjfolder.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 CNtObjectFolder :
13 public CComCoClass<CNtObjectFolder, &CLSID_NtObjectFolder>,
14 public CComObjectRootEx<CComMultiThreadModelNoCS>,
15 public IShellFolder2,
16 public IPersistFolder2,
17 public IShellFolderViewCB
18 {
19 WCHAR m_NtPath[MAX_PATH];
20
21 LPITEMIDLIST m_shellPidl;
22
23 public:
24
25 CNtObjectFolder();
26 virtual ~CNtObjectFolder();
27
28 // IShellFolder
29 virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
30 HWND hwndOwner,
31 LPBC pbcReserved,
32 LPOLESTR lpszDisplayName,
33 ULONG *pchEaten,
34 LPITEMIDLIST *ppidl,
35 ULONG *pdwAttributes);
36
37 virtual HRESULT STDMETHODCALLTYPE EnumObjects(
38 HWND hwndOwner,
39 SHCONTF grfFlags,
40 IEnumIDList **ppenumIDList);
41
42 virtual HRESULT STDMETHODCALLTYPE BindToObject(
43 LPCITEMIDLIST pidl,
44 LPBC pbcReserved,
45 REFIID riid,
46 void **ppvOut);
47
48 virtual HRESULT STDMETHODCALLTYPE BindToStorage(
49 LPCITEMIDLIST pidl,
50 LPBC pbcReserved,
51 REFIID riid,
52 void **ppvObj);
53
54 virtual HRESULT STDMETHODCALLTYPE CompareIDs(
55 LPARAM lParam,
56 LPCITEMIDLIST pidl1,
57 LPCITEMIDLIST pidl2);
58
59 virtual HRESULT STDMETHODCALLTYPE CreateViewObject(
60 HWND hwndOwner,
61 REFIID riid,
62 void **ppvOut);
63
64 virtual HRESULT STDMETHODCALLTYPE GetAttributesOf(
65 UINT cidl,
66 PCUITEMID_CHILD_ARRAY apidl,
67 SFGAOF *rgfInOut);
68
69 virtual HRESULT STDMETHODCALLTYPE GetUIObjectOf(
70 HWND hwndOwner,
71 UINT cidl,
72 PCUITEMID_CHILD_ARRAY apidl,
73 REFIID riid,
74 UINT *prgfInOut,
75 void **ppvOut);
76
77 virtual HRESULT STDMETHODCALLTYPE GetDisplayNameOf(
78 LPCITEMIDLIST pidl,
79 SHGDNF uFlags,
80 STRRET *lpName);
81
82 virtual HRESULT STDMETHODCALLTYPE SetNameOf(
83 HWND hwnd,
84 LPCITEMIDLIST pidl,
85 LPCOLESTR lpszName,
86 SHGDNF uFlags,
87 LPITEMIDLIST *ppidlOut);
88
89 // IShellFolder2
90 virtual HRESULT STDMETHODCALLTYPE GetDefaultSearchGUID(
91 GUID *lpguid);
92
93 virtual HRESULT STDMETHODCALLTYPE EnumSearches(
94 IEnumExtraSearch **ppenum);
95
96 virtual HRESULT STDMETHODCALLTYPE GetDefaultColumn(
97 DWORD dwReserved,
98 ULONG *pSort,
99 ULONG *pDisplay);
100
101 virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnState(
102 UINT iColumn,
103 SHCOLSTATEF *pcsFlags);
104
105 virtual HRESULT STDMETHODCALLTYPE GetDetailsEx(
106 LPCITEMIDLIST pidl,
107 const SHCOLUMNID *pscid,
108 VARIANT *pv);
109
110 virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
111 LPCITEMIDLIST pidl,
112 UINT iColumn,
113 SHELLDETAILS *psd);
114
115 virtual HRESULT STDMETHODCALLTYPE MapColumnToSCID(
116 UINT iColumn,
117 SHCOLUMNID *pscid);
118
119 // IPersist
120 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *lpClassId);
121
122 // IPersistFolder
123 virtual HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl);
124
125 // IPersistFolder2
126 virtual HRESULT STDMETHODCALLTYPE GetCurFolder(LPITEMIDLIST * pidl);
127
128 // IShellFolderViewCB
129 virtual HRESULT STDMETHODCALLTYPE MessageSFVCB(UINT uMsg, WPARAM wParam, LPARAM lParam);
130
131 // Internal
132 HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl, PCWSTR ntPath);
133
134 static HRESULT CALLBACK DefCtxMenuCallback(IShellFolder *, HWND, IDataObject *, UINT, WPARAM, LPARAM);
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 COM_INTERFACE_ENTRY_IID(IID_IShellFolderViewCB, IShellFolderViewCB)
147 END_COM_MAP()
148
149 };