[CMAKE]
[reactos.git] / dll / shellext / slayer / slayer.h
1 #pragma once
2
3 extern HINSTANCE hInstance;
4
5 typedef struct _CITEM
6 {
7 struct _CITEM *next;
8 TCHAR szName[256];
9 TCHAR szKeyName[256];
10 DWORD MajorVersion;
11 DWORD MinorVersion;
12 DWORD BuildNumber;
13 DWORD PlatformId;
14 DWORD SPMajorVersion;
15 DWORD SPMinorVersion;
16 } CITEM, *PCITEM;
17
18 /******************************************************************************
19 ICompatibilityPage
20 ******************************************************************************/
21
22 static const GUID CLSID_ICompatibilityPage = {0x513D916F,0x2A8E,0x4F51,{0xAE,0xAB,0x0C,0xBC,0x76,0xFB,0x1A,0xF9}}; /* F8 on XP! */
23
24 typedef struct ICompatibilityPage *LPCOMPATIBILITYPAGE;
25
26 /* IShellPropSheetExt */
27 typedef struct ifaceIShellPropSheetExtVbtl ifaceIShellPropSheetExtVbtl;
28 struct ifaceIShellPropSheetExtVbtl
29 {
30 HRESULT (STDMETHODCALLTYPE *AddPages)(LPCOMPATIBILITYPAGE this,
31 LPFNADDPROPSHEETPAGE lpfnAddPage,
32 LPARAM lParam);
33 HRESULT (STDMETHODCALLTYPE *ReplacePage)(LPCOMPATIBILITYPAGE this,
34 UINT uPageID,
35 LPFNADDPROPSHEETPAGE lpfnReplacePage,
36 LPARAM lParam);
37 };
38
39 /* IShellExtInit */
40 typedef struct ifaceIShellExtInitVbtl ifaceIShellExtInitVbtl;
41 struct ifaceIShellExtInitVbtl
42 {
43 HRESULT (STDMETHODCALLTYPE *Initialize)(LPCOMPATIBILITYPAGE this,
44 LPCITEMIDLIST pidlFolder,
45 IDataObject *pdtobj,
46 HKEY hkeyProgID);
47 };
48
49 /* IClassFactory */
50 typedef struct ifaceIClassFactoryVbtl ifaceIClassFactoryVbtl;
51 struct ifaceIClassFactoryVbtl
52 {
53 HRESULT (STDMETHODCALLTYPE *CreateInstance)(LPCOMPATIBILITYPAGE this,
54 LPUNKNOWN pUnkOuter,
55 REFIID riid,
56 PVOID *ppvObject);
57 HRESULT (STDMETHODCALLTYPE *LockServer)(LPCOMPATIBILITYPAGE this,
58 BOOL fLock);
59 };
60
61 /* ICompatibilityPage */
62 typedef struct ifaceICompatibilityPageVbtl ifaceICompatibilityPageVbtl;
63 struct ifaceICompatibilityPageVbtl
64 {
65 /* IUnknown */
66 HRESULT (STDMETHODCALLTYPE *QueryInterface)(LPCOMPATIBILITYPAGE this,
67 REFIID iid,
68 PVOID *pvObject);
69 ULONG (STDMETHODCALLTYPE *AddRef)(LPCOMPATIBILITYPAGE this);
70 ULONG (STDMETHODCALLTYPE *Release)(LPCOMPATIBILITYPAGE this);
71
72 union
73 {
74 ifaceIShellPropSheetExtVbtl IShellPropSheetExt;
75 ifaceIShellExtInitVbtl IShellExtInit;
76 ifaceIClassFactoryVbtl IClassFactory;
77 } fn;
78 };
79
80 typedef struct ICompatibilityPage
81 {
82 /* IUnknown fields */
83 ifaceICompatibilityPageVbtl* lpVtbl;
84 LONG ref;
85 /* ICompatibilityPage fields */
86 TCHAR szFile[MAX_PATH + 1];
87 BOOL Changed;
88
89 PCITEM CItems;
90 PCITEM CSelectedItem;
91 UINT nItems;
92 } COMPATIBILITYPAGE;
93
94 /* IUnknown */
95 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnQueryInterface(LPCOMPATIBILITYPAGE this,
96 REFIID iid,
97 PVOID *pvObject);
98 ULONG STDMETHODCALLTYPE ICompatibilityPage_fnAddRef(LPCOMPATIBILITYPAGE this);
99 ULONG STDMETHODCALLTYPE ICompatibilityPage_fnRelease(LPCOMPATIBILITYPAGE this);
100
101 /* IShellPropSheetExt */
102 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnAddPages(LPCOMPATIBILITYPAGE this,
103 LPFNADDPROPSHEETPAGE lpfnAddPage,
104 LPARAM lParam);
105 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnReplacePage(LPCOMPATIBILITYPAGE this,
106 UINT uPageID,
107 LPFNADDPROPSHEETPAGE lpfnReplacePage,
108 LPARAM lParam);
109 /* IShellExtInit */
110 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnInitialize(LPCOMPATIBILITYPAGE this,
111 LPCITEMIDLIST pidlFolder,
112 IDataObject *pdtobj,
113 HKEY hkeyProgID);
114 /* IClassFactory */
115 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnCreateInstance(LPCOMPATIBILITYPAGE this,
116 LPUNKNOWN pUnkOuter,
117 REFIID riid,
118 PVOID *ppvObject);
119 HRESULT STDMETHODCALLTYPE ICompatibilityPage_fnLockServer(LPCOMPATIBILITYPAGE this,
120 BOOL fLock);
121
122 /* EOF */