xref: /reactos/dll/win32/actxprxy/usrmarshal.c (revision 595b846d)
1 /*
2  * Miscellaneous Marshaling Routines
3  *
4  * Copyright 2006 Robert Shearman (for CodeWeavers)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #define WIN32_NO_STATUS
22 #define _INC_WINDOWS
23 #define COM_NO_WINDOWS_H
24 
25 #include <stdarg.h>
26 //#include <string.h>
27 
28 #define COBJMACROS
29 #define NONAMELESSUNION
30 #define NONAMELESSSTRUCT
31 
32 #include <windef.h>
33 #include <winbase.h>
34 //#include "wingdi.h"
35 //#include "winuser.h"
36 //#include "winerror.h"
37 #include <objbase.h>
38 //#include "servprov.h"
39 //#include "comcat.h"
40 //#include "docobj.h"
41 #include <shobjidl.h>
42 
43 #include <wine/debug.h>
44 
45 WINE_DEFAULT_DEBUG_CHANNEL(actxprxy);
46 
47 HRESULT CALLBACK IServiceProvider_QueryService_Proxy(
48     IServiceProvider* This,
49     REFGUID guidService,
50     REFIID riid,
51     void** ppvObject)
52 {
53     TRACE("(%p, %s, %s, %p)\n", This, debugstr_guid(guidService),
54         debugstr_guid(riid), ppvObject);
55 
56     return IServiceProvider_RemoteQueryService_Proxy(This, guidService, riid,
57         (IUnknown **)ppvObject);
58 }
59 
60 HRESULT __RPC_STUB IServiceProvider_QueryService_Stub(
61     IServiceProvider* This,
62     REFGUID guidService,
63     REFIID riid,
64     IUnknown** ppvObject)
65 {
66     TRACE("(%p, %s, %s, %p)\n", This, debugstr_guid(guidService),
67         debugstr_guid(riid), ppvObject);
68 
69     return IServiceProvider_QueryService(This, guidService, riid,
70         (void **)ppvObject);
71 }
72 
73 HRESULT CALLBACK ICatInformation_EnumClassesOfCategories_Proxy(
74     ICatInformation *This,
75     ULONG cImplemented,
76     CATID rgcatidImpl[],
77     ULONG cRequired,
78     CATID rgcatidReq[],
79     IEnumCLSID** ppenumClsid )
80 {
81     TRACE("(%p)\n", This);
82     return ICatInformation_RemoteEnumClassesOfCategories_Proxy( This, cImplemented, rgcatidImpl,
83                                                                 cRequired, rgcatidReq, ppenumClsid );
84 }
85 
86 HRESULT __RPC_STUB ICatInformation_EnumClassesOfCategories_Stub(
87     ICatInformation *This,
88     ULONG cImplemented,
89     CATID rgcatidImpl[],
90     ULONG cRequired,
91     CATID rgcatidReq[],
92     IEnumCLSID** ppenumClsid )
93 {
94     TRACE("(%p)\n", This);
95     return ICatInformation_EnumClassesOfCategories( This, cImplemented, rgcatidImpl,
96                                                     cRequired, rgcatidReq, ppenumClsid );
97 }
98 
99 HRESULT CALLBACK ICatInformation_IsClassOfCategories_Proxy(
100     ICatInformation *This,
101     REFCLSID rclsid,
102     ULONG cImplemented,
103     CATID rgcatidImpl[],
104     ULONG cRequired,
105     CATID rgcatidReq[] )
106 {
107     TRACE("(%p)\n", This);
108     return ICatInformation_RemoteIsClassOfCategories_Proxy( This, rclsid, cImplemented, rgcatidImpl,
109                                                             cRequired, rgcatidReq );
110 }
111 
112 HRESULT __RPC_STUB ICatInformation_IsClassOfCategories_Stub(
113     ICatInformation *This,
114     REFCLSID rclsid,
115     ULONG cImplemented,
116     CATID rgcatidImpl[],
117     ULONG cRequired,
118     CATID rgcatidReq[] )
119 {
120     TRACE("(%p)\n", This);
121     return ICatInformation_IsClassOfCategories( This, rclsid, cImplemented, rgcatidImpl,
122                                                 cRequired, rgcatidReq );
123 }
124 
125 HRESULT CALLBACK IPrint_Print_Proxy(
126     IPrint *This,
127     DWORD grfFlags,
128     DVTARGETDEVICE **pptd,
129     PAGESET **ppPageSet,
130     STGMEDIUM *pstgmOptions,
131     IContinueCallback *pcallback,
132     LONG nFirstPage,
133     LONG *pcPagesPrinted,
134     LONG *pnLastPage )
135 {
136     TRACE("(%p)\n", This);
137     return IPrint_RemotePrint_Proxy( This, grfFlags, pptd, ppPageSet, (RemSTGMEDIUM *)pstgmOptions,
138                                      pcallback, nFirstPage, pcPagesPrinted, pnLastPage );
139 }
140 
141 HRESULT __RPC_STUB IPrint_Print_Stub(
142     IPrint *This,
143     DWORD grfFlags,
144     DVTARGETDEVICE **pptd,
145     PAGESET **ppPageSet,
146     RemSTGMEDIUM *pstgmOptions,
147     IContinueCallback *pcallback,
148     LONG nFirstPage,
149     LONG *pcPagesPrinted,
150     LONG *pnLastPage )
151 {
152     TRACE("(%p)\n", This);
153     return IPrint_Print( This, grfFlags, pptd, ppPageSet, (STGMEDIUM *)pstgmOptions,
154                          pcallback, nFirstPage, pcPagesPrinted, pnLastPage );
155 }
156 
157 HRESULT CALLBACK IEnumOleDocumentViews_Next_Proxy(
158     IEnumOleDocumentViews *This,
159     ULONG cViews,
160     IOleDocumentView **rgpView,
161     ULONG *pcFetched )
162 {
163     TRACE("(%p)\n", This);
164     return IEnumOleDocumentViews_RemoteNext_Proxy( This, cViews, rgpView, pcFetched );
165 }
166 
167 HRESULT __RPC_STUB IEnumOleDocumentViews_Next_Stub(
168     IEnumOleDocumentViews *This,
169     ULONG cViews,
170     IOleDocumentView **rgpView,
171     ULONG *pcFetched )
172 {
173     TRACE("(%p)\n", This);
174     return IEnumOleDocumentViews_Next( This, cViews, rgpView, pcFetched );
175 }
176 
177 HRESULT CALLBACK IEnumShellItems_Next_Proxy(
178     IEnumShellItems *This,
179     ULONG celt,
180     IShellItem **rgelt,
181     ULONG *pceltFetched)
182 {
183     ULONG fetched;
184     TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
185     if (!pceltFetched) pceltFetched = &fetched;
186     return IEnumShellItems_RemoteNext_Proxy(This, celt, rgelt, pceltFetched);
187 }
188 
189 HRESULT __RPC_STUB IEnumShellItems_Next_Stub(
190     IEnumShellItems *This,
191     ULONG celt,
192     IShellItem **rgelt,
193     ULONG *pceltFetched)
194 {
195     HRESULT hr;
196     TRACE("(%p)->(%d, %p, %p)\n", This, celt, rgelt, pceltFetched);
197     *pceltFetched = 0;
198     hr = IEnumShellItems_Next(This, celt, rgelt, pceltFetched);
199     if (hr == S_OK) *pceltFetched = celt;
200     return hr;
201 }
202 
203 #ifdef __REACTOS__
204 
205 HRESULT CALLBACK IEnumExplorerCommand_Next_Proxy(
206     IEnumExplorerCommand *This,
207     ULONG celt,
208     IExplorerCommand **pUICommand,
209     ULONG *pceltFetched)
210 {
211     ULONG fetched;
212     TRACE("(%p)->(%d, %p, %p)\n", This, celt, pUICommand, pceltFetched);
213     if (!pceltFetched) pceltFetched = &fetched;
214     return IEnumExplorerCommand_RemoteNext_Proxy(This, celt, pUICommand, pceltFetched);
215 }
216 
217 HRESULT __RPC_STUB IEnumExplorerCommand_Next_Stub(
218     IEnumExplorerCommand *This,
219     ULONG celt,
220     IExplorerCommand **pUICommand,
221     ULONG *pceltFetched)
222 {
223     HRESULT hr;
224     TRACE("(%p)->(%d, %p, %p)\n", This, celt, pUICommand, pceltFetched);
225     *pceltFetched = 0;
226     hr = IEnumExplorerCommand_Next(This, celt, pUICommand, pceltFetched);
227     if (hr == S_OK) *pceltFetched = celt;
228     return hr;
229 }
230 
231 #endif // __REACTOS__
232 
233 HRESULT CALLBACK IModalWindow_Show_Proxy(
234     IModalWindow *This,
235     HWND hwndOwner)
236 {
237     TRACE("(%p)->(%p)\n", This, hwndOwner);
238     return IModalWindow_RemoteShow_Proxy(This, hwndOwner);
239 }
240 
241 HRESULT __RPC_STUB IModalWindow_Show_Stub(
242     IModalWindow *This,
243     HWND hwndOwner)
244 {
245     TRACE("(%p)->(%p)\n", This, hwndOwner);
246     return IModalWindow_Show(This, hwndOwner);
247 }
248 
249 HRESULT __RPC_STUB IFolderView2_GetGroupBy_Stub(
250     IFolderView2 *This,
251     PROPERTYKEY *pkey,
252     BOOL *ascending)
253 {
254     TRACE("(%p)->(%p %p)\n", This, pkey, ascending);
255     return IFolderView2_GetGroupBy(This, pkey, ascending);
256 }
257 
258 HRESULT __RPC_STUB IFolderView2_GetGroupBy_Proxy(
259     IFolderView2 *This,
260     PROPERTYKEY *pkey,
261     BOOL *ascending)
262 {
263     TRACE("(%p)->(%p %p)\n", This, pkey, ascending);
264     return IFolderView2_RemoteGetGroupBy_Proxy(This, pkey, ascending);
265 }
266