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