ReactOS 0.4.16-dev-2332-g4cba65d
antimoniker.c
Go to the documentation of this file.
1/*
2 * AntiMonikers implementation
3 *
4 * Copyright 1999 Noomen Hamza
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#include <stdarg.h>
22#include <string.h>
23
24#define COBJMACROS
25#include "windef.h"
26#include "winbase.h"
27#include "objbase.h"
28#include "wine/debug.h"
29#include "moniker.h"
30
32
33/* AntiMoniker data structure */
34typedef struct AntiMonikerImpl{
38 IUnknown *pMarshal; /* custom marshaler */
41
43{
44 return CONTAINING_RECORD(iface, AntiMonikerImpl, IMoniker_iface);
45}
46
48{
49 return CONTAINING_RECORD(iface, AntiMonikerImpl, IROTData_iface);
50}
51
53
55{
57
58 if (!moniker)
59 {
60 *order = 0;
61 return FALSE;
62 }
63
64 *order = moniker->count;
65
66 return TRUE;
67}
68
69/*******************************************************************************
70 * AntiMoniker_QueryInterface
71 *******************************************************************************/
72static HRESULT WINAPI
74{
76
77 TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
78
79 if ( ppvObject==0 )
80 return E_INVALIDARG;
81
82 *ppvObject = 0;
83
87 IsEqualIID(&IID_IMoniker, riid) ||
88 IsEqualGUID(&CLSID_AntiMoniker, riid))
89 {
90 *ppvObject = iface;
91 }
92 else if (IsEqualIID(&IID_IROTData, riid))
93 *ppvObject = &This->IROTData_iface;
94 else if (IsEqualIID(&IID_IMarshal, riid))
95 {
96 HRESULT hr = S_OK;
97 if (!This->pMarshal)
98 hr = MonikerMarshal_Create(iface, &This->pMarshal);
99 if (hr != S_OK)
100 return hr;
101 return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject);
102 }
103
104 if ((*ppvObject)==0)
105 return E_NOINTERFACE;
106
107 IMoniker_AddRef(iface);
108
109 return S_OK;
110}
111
112/******************************************************************************
113 * AntiMoniker_AddRef
114 ******************************************************************************/
116{
118 ULONG refcount = InterlockedIncrement(&moniker->refcount);
119
120 TRACE("%p, refcount %lu.\n", iface, refcount);
121
122 return refcount;
123}
124
125/******************************************************************************
126 * AntiMoniker_Release
127 ******************************************************************************/
129{
131 ULONG refcount = InterlockedDecrement(&moniker->refcount);
132
133 TRACE("%p, refcount %lu.\n", iface, refcount);
134
135 if (!refcount)
136 {
137 if (moniker->pMarshal) IUnknown_Release(moniker->pMarshal);
138 free(moniker);
139 }
140
141 return refcount;
142}
143
144/******************************************************************************
145 * AntiMoniker_GetClassID
146 ******************************************************************************/
147static HRESULT WINAPI
149{
150 TRACE("(%p,%p)\n",iface,pClassID);
151
152 if (pClassID==NULL)
153 return E_POINTER;
154
155 *pClassID = CLSID_AntiMoniker;
156
157 return S_OK;
158}
159
160/******************************************************************************
161 * AntiMoniker_IsDirty
162 ******************************************************************************/
163static HRESULT WINAPI
165{
166 /* Note that the OLE-provided implementations of the IPersistStream::IsDirty
167 method in the OLE-provided moniker interfaces always return S_FALSE because
168 their internal state never changes. */
169
170 TRACE("(%p)\n",iface);
171
172 return S_FALSE;
173}
174
175/******************************************************************************
176 * AntiMoniker_Load
177 ******************************************************************************/
179{
181 DWORD count = 0;
182 HRESULT hr;
183
184 TRACE("%p, %p.\n", iface, stream);
185
186 if (FAILED(hr = IStream_Read(stream, &count, sizeof(count), NULL)))
187 return hr;
188
189 if (count > 0xfffff)
190 return E_INVALIDARG;
191
192 moniker->count = count;
193
194 return S_OK;
195}
196
197/******************************************************************************
198 * AntiMoniker_Save
199 ******************************************************************************/
201{
203
204 TRACE("%p, %p, %d.\n", iface, stream, clear_dirty);
205
206 return IStream_Write(stream, &moniker->count, sizeof(moniker->count), NULL);
207}
208
209/******************************************************************************
210 * AntiMoniker_GetSizeMax
211 *
212 * PARAMS
213 * pcbSize [out] Pointer to size of stream needed to save object
214 ******************************************************************************/
215static HRESULT WINAPI
217{
218 TRACE("(%p,%p)\n",iface,pcbSize);
219
220 if (!pcbSize)
221 return E_POINTER;
222
223 /* for more details see AntiMonikerImpl_Save comments */
224
225 /*
226 * Normally the sizemax must be sizeof DWORD, but
227 * I tested this function it usually return 16 bytes
228 * more than the number of bytes used by AntiMoniker::Save function
229 */
230 pcbSize->u.LowPart = sizeof(DWORD)+16;
231
232 pcbSize->u.HighPart=0;
233
234 return S_OK;
235}
236
237/******************************************************************************
238 * AntiMoniker_BindToObject
239 ******************************************************************************/
240static HRESULT WINAPI
242 REFIID riid, VOID** ppvResult)
243{
244 TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
245 return E_NOTIMPL;
246}
247
248/******************************************************************************
249 * AntiMoniker_BindToStorage
250 ******************************************************************************/
251static HRESULT WINAPI
253 REFIID riid, VOID** ppvResult)
254{
255 TRACE("(%p,%p,%p,%s,%p)\n",iface,pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
256 return E_NOTIMPL;
257}
258
259static HRESULT WINAPI
260AntiMonikerImpl_Reduce(IMoniker* iface, IBindCtx* pbc, DWORD dwReduceHowFar,
261 IMoniker** ppmkToLeft, IMoniker** ppmkReduced)
262{
263 TRACE("%p, %p, %ld, %p, %p.\n", iface, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced);
264
265 if (ppmkReduced==NULL)
266 return E_POINTER;
267
269
270 *ppmkReduced=iface;
271
273}
274/******************************************************************************
275 * AntiMoniker_ComposeWith
276 ******************************************************************************/
277static HRESULT WINAPI
279 BOOL fOnlyIfNotGeneric, IMoniker** ppmkComposite)
280{
281
282 TRACE("(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
283
284 if ((ppmkComposite==NULL)||(pmkRight==NULL))
285 return E_POINTER;
286
287 *ppmkComposite=0;
288
289 if (fOnlyIfNotGeneric)
290 return MK_E_NEEDGENERIC;
291 else
292 return CreateGenericComposite(iface,pmkRight,ppmkComposite);
293}
294
295static HRESULT WINAPI AntiMonikerImpl_Enum(IMoniker *iface, BOOL forward, IEnumMoniker **ppenumMoniker)
296{
297 TRACE("%p, %d, %p.\n", iface, forward, ppenumMoniker);
298
299 if (ppenumMoniker == NULL)
300 return E_INVALIDARG;
301
302 *ppenumMoniker = NULL;
303
304 return S_OK;
305}
306
307/******************************************************************************
308 * AntiMoniker_IsEqual
309 ******************************************************************************/
311{
312 AntiMonikerImpl *moniker = impl_from_IMoniker(iface), *other_moniker;
313
314 TRACE("%p, %p.\n", iface, other);
315
316 if (!other)
317 return E_INVALIDARG;
318
319 other_moniker = unsafe_impl_from_IMoniker(other);
320 if (!other_moniker)
321 return S_FALSE;
322
323 return moniker->count == other_moniker->count ? S_OK : S_FALSE;
324}
325
326/******************************************************************************
327 * AntiMoniker_Hash
328 ******************************************************************************/
330{
332
333 TRACE("%p, %p.\n", iface, hash);
334
335 if (!hash)
336 return E_POINTER;
337
338 *hash = 0x80000000 | moniker->count;
339
340 return S_OK;
341}
342
343/******************************************************************************
344 * AntiMoniker_IsRunning
345 ******************************************************************************/
346static HRESULT WINAPI
348 IMoniker* pmkNewlyRunning)
349{
351 HRESULT res;
352
353 TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
354
355 if (pbc==NULL)
356 return E_INVALIDARG;
357
358 res=IBindCtx_GetRunningObjectTable(pbc,&rot);
359
360 if (FAILED(res))
361 return res;
362
363 res = IRunningObjectTable_IsRunning(rot,iface);
364
365 IRunningObjectTable_Release(rot);
366
367 return res;
368}
369
370/******************************************************************************
371 * AntiMoniker_GetTimeOfLastChange
372 ******************************************************************************/
374 IBindCtx* pbc,
375 IMoniker* pmkToLeft,
376 FILETIME* pAntiTime)
377{
378 TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pAntiTime);
379 return E_NOTIMPL;
380}
381
382/******************************************************************************
383 * AntiMoniker_Inverse
384 ******************************************************************************/
385static HRESULT WINAPI
387{
388 TRACE("(%p,%p)\n",iface,ppmk);
389
390 if (ppmk==NULL)
391 return E_POINTER;
392
393 *ppmk=0;
394
395 return MK_E_NOINVERSE;
396}
397
398/******************************************************************************
399 * AntiMoniker_CommonPrefixWith
400 ******************************************************************************/
402{
403 AntiMonikerImpl *moniker = impl_from_IMoniker(iface), *other_moniker;
404 HRESULT hr;
405
406 TRACE("%p, %p, %p.\n", iface, other, prefix);
407
408 other_moniker = unsafe_impl_from_IMoniker(other);
409 if (other_moniker)
410 {
411 if (moniker->count <= other_moniker->count)
412 {
413 *prefix = iface;
414 hr = moniker->count == other_moniker->count ? MK_S_US : MK_S_ME;
415 }
416 else
417 {
418 *prefix = other;
419 hr = MK_S_HIM;
420 }
421
422 IMoniker_AddRef(*prefix);
423 return hr;
424 }
425
426 return MonikerCommonPrefixWith(iface, other, prefix);
427}
428
430{
431 TRACE("%p, %p, %p.\n", iface, other, result);
432
433 if (!other || !result)
434 return E_INVALIDARG;
435
436 IMoniker_AddRef(other);
437 *result = other;
438
439 return MK_S_HIM;
440}
441
442/******************************************************************************
443 * AntiMoniker_GetDisplayName
444 ******************************************************************************/
445static HRESULT WINAPI
446AntiMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *displayname)
447{
449 static const WCHAR nameW[] = {'\\','.','.'};
450 WCHAR *ptrW;
451 int i;
452
453 TRACE("%p, %p, %p, %p.\n", iface, pbc, pmkToLeft, displayname);
454
455 if (!displayname)
456 return E_POINTER;
457
458 if (pmkToLeft!=NULL){
459 FIXME("() pmkToLeft!=NULL not implemented\n");
460 return E_NOTIMPL;
461 }
462
463 *displayname = ptrW = CoTaskMemAlloc((moniker->count * ARRAY_SIZE(nameW) + 1) * sizeof(WCHAR));
464 if (!*displayname)
465 return E_OUTOFMEMORY;
466
467 for (i = 0; i < moniker->count; ++i)
468 memcpy(ptrW + i * ARRAY_SIZE(nameW), nameW, sizeof(nameW));
469 ptrW[moniker->count * ARRAY_SIZE(nameW)] = 0;
470
471 return S_OK;
472}
473
474/******************************************************************************
475 * AntiMoniker_ParseDisplayName
476 ******************************************************************************/
477static HRESULT WINAPI
479 IMoniker* pmkToLeft, LPOLESTR pszDisplayName,
480 ULONG* pchEaten, IMoniker** ppmkOut)
481{
482 TRACE("(%p,%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut);
483 return E_NOTIMPL;
484}
485
486/******************************************************************************
487 * AntiMoniker_IsSystemMoniker
488 ******************************************************************************/
489static HRESULT WINAPI
491{
492 TRACE("(%p,%p)\n",iface,pwdMksys);
493
494 if (!pwdMksys)
495 return E_POINTER;
496
497 (*pwdMksys)=MKSYS_ANTIMONIKER;
498
499 return S_OK;
500}
501
502/*******************************************************************************
503 * AntiMonikerIROTData_QueryInterface
504 *******************************************************************************/
505static HRESULT WINAPI
507{
509
510 TRACE("(%p,%s,%p)\n",iface,debugstr_guid(riid),ppvObject);
511
512 return AntiMonikerImpl_QueryInterface(&This->IMoniker_iface, riid, ppvObject);
513}
514
515/***********************************************************************
516 * AntiMonikerIROTData_AddRef
517 */
519{
521
522 TRACE("(%p)\n",iface);
523
524 return AntiMonikerImpl_AddRef(&This->IMoniker_iface);
525}
526
527/***********************************************************************
528 * AntiMonikerIROTData_Release
529 */
531{
533
534 TRACE("(%p)\n",iface);
535
536 return AntiMonikerImpl_Release(&This->IMoniker_iface);
537}
538
539/******************************************************************************
540 * AntiMonikerIROTData_GetComparisonData
541 ******************************************************************************/
542static HRESULT WINAPI
544{
546
547 TRACE("%p, %p, %lu, %p.\n", iface, data, data_len, data_req);
548
549 *data_req = sizeof(CLSID) + sizeof(DWORD);
550 if (data_len < *data_req)
551 return E_OUTOFMEMORY;
552
553 memcpy(data, &CLSID_AntiMoniker, sizeof(CLSID));
554 memcpy(data + sizeof(CLSID), &moniker->count, sizeof(moniker->count));
555
556 return S_OK;
557}
558
559/********************************************************************************/
560/* Virtual function table for the AntiMonikerImpl class which include IPersist,*/
561/* IPersistStream and IMoniker functions. */
562static const IMonikerVtbl VT_AntiMonikerImpl =
563{
587};
588
590{
591 if (iface->lpVtbl != &VT_AntiMonikerImpl)
592 return NULL;
593 return CONTAINING_RECORD(iface, AntiMonikerImpl, IMoniker_iface);
594}
595
596/********************************************************************************/
597/* Virtual function table for the IROTData class. */
598static const IROTDataVtbl VT_ROTDataImpl =
599{
604};
605
607{
609
610 if (!(moniker = calloc(1, sizeof(*moniker))))
611 return E_OUTOFMEMORY;
612
614 moniker->IROTData_iface.lpVtbl = &VT_ROTDataImpl;
615 moniker->refcount = 1;
616 moniker->count = order;
617
619
620 return S_OK;
621}
622
623/******************************************************************************
624 * CreateAntiMoniker [OLE32.@]
625 ******************************************************************************/
627{
628 TRACE("%p.\n", moniker);
629
630 return create_anti_moniker(1, moniker);
631}
632
634 IUnknown *pUnk, REFIID riid, void **ppv)
635{
636 IMoniker *pMoniker;
637 HRESULT hr;
638
639 TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv);
640
641 *ppv = NULL;
642
643 if (pUnk)
645
646 hr = CreateAntiMoniker(&pMoniker);
647 if (FAILED(hr))
648 return hr;
649
650 hr = IMoniker_QueryInterface(pMoniker, riid, ppv);
651 IMoniker_Release(pMoniker);
652
653 return hr;
654}
GLfloat rot
Definition: 3dtext.c:36
static HRESULT WINAPI AntiMonikerImpl_Enum(IMoniker *iface, BOOL forward, IEnumMoniker **ppenumMoniker)
Definition: antimoniker.c:295
HRESULT create_anti_moniker(DWORD order, IMoniker **ret)
Definition: antimoniker.c:606
BOOL is_anti_moniker(IMoniker *iface, DWORD *order)
Definition: antimoniker.c:54
static AntiMonikerImpl * impl_from_IMoniker(IMoniker *iface)
Definition: antimoniker.c:42
static HRESULT WINAPI AntiMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *pwdMksys)
Definition: antimoniker.c:490
static HRESULT WINAPI AntiMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
Definition: antimoniker.c:216
HRESULT WINAPI AntiMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv)
Definition: antimoniker.c:633
static HRESULT WINAPI AntiMonikerImpl_Save(IMoniker *iface, IStream *stream, BOOL clear_dirty)
Definition: antimoniker.c:200
static HRESULT WINAPI AntiMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
Definition: antimoniker.c:241
static AntiMonikerImpl * unsafe_impl_from_IMoniker(IMoniker *iface)
Definition: antimoniker.c:589
static const IMonikerVtbl VT_AntiMonikerImpl
Definition: antimoniker.c:562
static HRESULT WINAPI AntiMonikerImpl_Load(IMoniker *iface, IStream *stream)
Definition: antimoniker.c:178
static HRESULT WINAPI AntiMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
Definition: antimoniker.c:73
static HRESULT WINAPI AntiMonikerImpl_Inverse(IMoniker *iface, IMoniker **ppmk)
Definition: antimoniker.c:386
static HRESULT WINAPI AntiMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
Definition: antimoniker.c:347
static HRESULT WINAPI AntiMonikerImpl_Hash(IMoniker *iface, DWORD *hash)
Definition: antimoniker.c:329
static HRESULT WINAPI AntiMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *other, IMoniker **prefix)
Definition: antimoniker.c:401
static HRESULT WINAPI AntiMonikerImpl_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pAntiTime)
Definition: antimoniker.c:373
static HRESULT WINAPI AntiMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *displayname)
Definition: antimoniker.c:446
static const IROTDataVtbl VT_ROTDataImpl
Definition: antimoniker.c:598
static HRESULT WINAPI AntiMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
Definition: antimoniker.c:260
static HRESULT WINAPI AntiMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
Definition: antimoniker.c:252
static HRESULT WINAPI AntiMonikerROTDataImpl_QueryInterface(IROTData *iface, REFIID riid, VOID **ppvObject)
Definition: antimoniker.c:506
static HRESULT WINAPI AntiMonikerImpl_GetClassID(IMoniker *iface, CLSID *pClassID)
Definition: antimoniker.c:148
static HRESULT WINAPI AntiMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
Definition: antimoniker.c:478
static HRESULT WINAPI AntiMonikerImpl_IsEqual(IMoniker *iface, IMoniker *other)
Definition: antimoniker.c:310
static HRESULT WINAPI AntiMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
Definition: antimoniker.c:278
static HRESULT WINAPI AntiMonikerROTDataImpl_GetComparisonData(IROTData *iface, BYTE *data, ULONG data_len, ULONG *data_req)
Definition: antimoniker.c:543
static ULONG WINAPI AntiMonikerImpl_Release(IMoniker *iface)
Definition: antimoniker.c:128
static AntiMonikerImpl * impl_from_IROTData(IROTData *iface)
Definition: antimoniker.c:47
static ULONG WINAPI AntiMonikerROTDataImpl_Release(IROTData *iface)
Definition: antimoniker.c:530
static ULONG WINAPI AntiMonikerROTDataImpl_AddRef(IROTData *iface)
Definition: antimoniker.c:518
static ULONG WINAPI AntiMonikerImpl_AddRef(IMoniker *iface)
Definition: antimoniker.c:115
static HRESULT WINAPI AntiMonikerImpl_IsDirty(IMoniker *iface)
Definition: antimoniker.c:164
static HRESULT WINAPI AntiMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *other, IMoniker **result)
Definition: antimoniker.c:429
HRESULT WINAPI CreateAntiMoniker(IMoniker **moniker)
Definition: antimoniker.c:626
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
static const WCHAR nameW[]
Definition: main.c:49
#define ARRAY_SIZE(A)
Definition: main.h:20
#define FIXME(fmt,...)
Definition: precomp.h:53
const GUID IID_IUnknown
HRESULT WINAPI MonikerCommonPrefixWith(IMoniker *pmkThis, IMoniker *pmkOther, IMoniker **ppmkCommon)
HRESULT WINAPI CreateGenericComposite(IMoniker *left, IMoniker *right, IMoniker **composite)
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT MonikerMarshal_Create(IMoniker *inner, IUnknown **outer)
Definition: moniker.c:1361
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
return ret
Definition: mutex.c:146
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLuint res
Definition: glext.h:9613
GLuint64EXT * result
Definition: glext.h:11304
GLuint GLdouble GLdouble GLint GLint order
Definition: glext.h:11194
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static BSTR *static LPOLESTR
Definition: varformat.c:44
int other
Definition: msacm.c:1376
IID CLSID
Definition: mstsclib_i.c:62
#define DWORD
Definition: nt_native.h:44
long LONG
Definition: pedump.c:60
const GUID IID_IPersist
Definition: proxy.cpp:14
const GUID IID_IPersistStream
Definition: proxy.cpp:13
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define REFIID
Definition: guiddef.h:118
#define calloc
Definition: rosglue.h:14
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
IUnknown * pMarshal
Definition: antimoniker.c:38
IROTData IROTData_iface
Definition: antimoniker.c:36
IMoniker IMoniker_iface
Definition: antimoniker.c:35
struct _ULARGE_INTEGER::@4426 u
Definition: _hash_fun.h:40
Definition: main.c:40
IMoniker IMoniker_iface
Definition: main.c:41
Definition: parse.h:23
Character const *const prefix
Definition: tempnam.cpp:195
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:3451
#define MK_S_REDUCED_TO_SELF
Definition: winerror.h:3892
#define E_NOINTERFACE
Definition: winerror.h:3479
#define MK_E_NOINVERSE
Definition: winerror.h:3907
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771
#define MK_S_ME
Definition: winerror.h:3895
#define MK_E_NEEDGENERIC
Definition: winerror.h:3893
#define MK_S_HIM
Definition: winerror.h:3897
#define E_POINTER
Definition: winerror.h:3480
#define MK_S_US
Definition: winerror.h:3899
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193