ReactOS 0.4.17-dev-934-g091855f
main.c File Reference
#include "wine/debug.h"
#include "winbase.h"
#include "wingdi.h"
#include "objbase.h"
#include "rpcproxy.h"
#include "ddraw.h"
#include "initguid.h"
#include "ddrawex_private.h"
Include dependency graph for main.c:

Go to the source code of this file.

Classes

struct  ddrawex_class_factory
 
struct  ddrawex_factory
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ddrawex)
 
static struct ddrawex_class_factory * impl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI ddrawex_class_factory_QueryInterface (IClassFactory *iface, REFIID riid, void **out)
 
static ULONG WINAPI ddrawex_class_factory_AddRef (IClassFactory *iface)
 
static ULONG WINAPI ddrawex_class_factory_Release (IClassFactory *iface)
 
static HRESULT WINAPI ddrawex_class_factory_CreateInstance (IClassFactory *iface, IUnknown *outer_unknown, REFIID riid, void **out)
 
static HRESULT WINAPI ddrawex_class_factory_LockServer (IClassFactory *iface, BOOL dolock)
 
static struct ddrawex_factory * impl_from_IDirectDrawFactory (IDirectDrawFactory *iface)
 
static HRESULT WINAPI ddrawex_factory_QueryInterface (IDirectDrawFactory *iface, REFIID riid, void **out)
 
static ULONG WINAPI ddrawex_factory_AddRef (IDirectDrawFactory *iface)
 
static ULONG WINAPI ddrawex_factory_Release (IDirectDrawFactory *iface)
 
static HRESULT WINAPI ddrawex_factory_DirectDrawEnumerate (IDirectDrawFactory *iface, LPDDENUMCALLBACKW cb, void *ctx)
 
static HRESULT ddrawex_factory_create (IUnknown *outer_unknown, REFIID riid, void **out)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, void **out)
 

Variables

static const IClassFactoryVtbl ddrawex_class_factory_vtbl
 
static const IDirectDrawFactoryVtbl ddrawex_factory_vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 23 of file main.c.

Function Documentation

◆ ddrawex_class_factory_AddRef()

static ULONG WINAPI ddrawex_class_factory_AddRef ( IClassFactory *  iface)
static

Definition at line 67 of file main.c.

68{
71
72 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
73
74 return refcount;
75}
#define InterlockedIncrement
Definition: armddk.h:53
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: main.c:49
#define TRACE(s)
Definition: solgame.cpp:4
Definition: main.c:439
uint32_t ULONG
Definition: typedefs.h:59

◆ ddrawex_class_factory_CreateInstance()

static HRESULT WINAPI ddrawex_class_factory_CreateInstance ( IClassFactory *  iface,
IUnknown *  outer_unknown,
REFIID  riid,
void **  out 
)
static

Definition at line 90 of file main.c.

92{
94
95 TRACE("iface %p, outer_unknown %p, riid %s, out %p.\n",
96 iface, outer_unknown, debugstr_guid(riid), out);
97
98 return factory->pfnCreateInstance(outer_unknown, riid, out);
99}
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ ddrawex_class_factory_LockServer()

static HRESULT WINAPI ddrawex_class_factory_LockServer ( IClassFactory *  iface,
BOOL  dolock 
)
static

Definition at line 101 of file main.c.

102{
103 FIXME("iface %p, dolock %#x stub!\n", iface, dolock);
104
105 return S_OK;
106}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define S_OK
Definition: intsafe.h:52

◆ ddrawex_class_factory_QueryInterface()

static HRESULT WINAPI ddrawex_class_factory_QueryInterface ( IClassFactory *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 49 of file main.c.

50{
51 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
52
55 {
56 IClassFactory_AddRef(iface);
57 *out = iface;
58 return S_OK;
59 }
60
61 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
62
63 *out = NULL;
64 return E_NOINTERFACE;
65}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
const GUID IID_IClassFactory
#define NULL
Definition: types.h:112
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ ddrawex_class_factory_Release()

static ULONG WINAPI ddrawex_class_factory_Release ( IClassFactory *  iface)
static

Definition at line 77 of file main.c.

78{
81
82 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
83
84 if (!refcount)
86
87 return refcount;
88}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5

◆ ddrawex_factory_AddRef()

static ULONG WINAPI ddrawex_factory_AddRef ( IDirectDrawFactory *  iface)
static

Definition at line 146 of file main.c.

147{
150
151 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
152
153 return refcount;
154}
static struct ddrawex_factory * impl_from_IDirectDrawFactory(IDirectDrawFactory *iface)
Definition: main.c:123

◆ ddrawex_factory_create()

static HRESULT ddrawex_factory_create ( IUnknown *  outer_unknown,
REFIID  riid,
void **  out 
)
static

Definition at line 186 of file main.c.

187{
188 struct ddrawex_factory *factory;
189 HRESULT hr;
190
191 TRACE("outer_unknown %p, riid %s, out %p.\n", outer_unknown, debugstr_guid(riid), out);
192
193 if (outer_unknown)
195
196 if (!(factory = calloc(1, sizeof(*factory))))
197 return E_OUTOFMEMORY;
198
199 factory->IDirectDrawFactory_iface.lpVtbl = &ddrawex_factory_vtbl;
200
201 if (FAILED(hr = ddrawex_factory_QueryInterface(&factory->IDirectDrawFactory_iface, riid, out)))
202 free(factory);
203
204 return hr;
205}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT hr
Definition: delayimp.cpp:582
static HRESULT WINAPI ddrawex_factory_QueryInterface(IDirectDrawFactory *iface, REFIID riid, void **out)
Definition: main.c:128
static const IDirectDrawFactoryVtbl ddrawex_factory_vtbl
Definition: main.c:177
#define FAILED(hr)
Definition: intsafe.h:51
#define calloc
Definition: rosglue.h:14
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

Referenced by DllGetClassObject().

◆ ddrawex_factory_DirectDrawEnumerate()

static HRESULT WINAPI ddrawex_factory_DirectDrawEnumerate ( IDirectDrawFactory *  iface,
LPDDENUMCALLBACKW  cb,
void *  ctx 
)
static

Definition at line 169 of file main.c.

171{
172 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
173
174 return E_FAIL;
175}
#define E_FAIL
Definition: ddrawi.h:102
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118

◆ ddrawex_factory_QueryInterface()

static HRESULT WINAPI ddrawex_factory_QueryInterface ( IDirectDrawFactory *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 128 of file main.c.

129{
130 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
131
132 if (IsEqualGUID(riid, &IID_IDirectDrawFactory)
134 {
136 *out = iface;
137 return S_OK;
138 }
139
140 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
141
142 *out = NULL;
143 return E_NOINTERFACE;
144}
#define IDirectDrawFactory_AddRef(p)

Referenced by ddrawex_factory_create().

◆ ddrawex_factory_Release()

static ULONG WINAPI ddrawex_factory_Release ( IDirectDrawFactory *  iface)
static

Definition at line 156 of file main.c.

157{
160
161 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
162
163 if (!refcount)
164 free(factory);
165
166 return refcount;
167}

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
void **  out 
)

Definition at line 210 of file main.c.

211{
213
214 TRACE("rclsid %s, riid %s, out %p.\n", debugstr_guid(rclsid), debugstr_guid(riid), out);
215
218 return E_NOINTERFACE;
219
220 if (!IsEqualGUID(&CLSID_DirectDrawFactory, rclsid))
221 {
222 FIXME("%s: no class found.\n", debugstr_guid(rclsid));
224 }
225
226 if (!(factory = calloc(1, sizeof(*factory))))
227 return E_OUTOFMEMORY;
228
230 factory->ref = 1;
231
232 factory->pfnCreateInstance = ddrawex_factory_create;
233
234 *out = factory;
235
236 return S_OK;
237}
static const IClassFactoryVtbl ddrawex_class_factory_vtbl
Definition: main.c:108
static HRESULT ddrawex_factory_create(IUnknown *outer_unknown, REFIID riid, void **out)
Definition: main.c:186
IClassFactory IClassFactory_iface
Definition: main.c:440
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ impl_from_IClassFactory()

static struct ddrawex_class_factory * impl_from_IClassFactory ( IClassFactory *  iface)
inlinestatic

Definition at line 44 of file main.c.

45{
46 return CONTAINING_RECORD(iface, struct ddrawex_class_factory, IClassFactory_iface);
47}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

◆ impl_from_IDirectDrawFactory()

static struct ddrawex_factory * impl_from_IDirectDrawFactory ( IDirectDrawFactory *  iface)
inlinestatic

Definition at line 123 of file main.c.

124{
125 return CONTAINING_RECORD(iface, struct ddrawex_factory, IDirectDrawFactory_iface);
126}

Referenced by ddrawex_factory_AddRef(), and ddrawex_factory_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ddrawex  )

Variable Documentation

◆ ddrawex_class_factory_vtbl

const IClassFactoryVtbl ddrawex_class_factory_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI ddrawex_class_factory_AddRef(IClassFactory *iface)
Definition: main.c:67
static ULONG WINAPI ddrawex_class_factory_Release(IClassFactory *iface)
Definition: main.c:77
static HRESULT WINAPI ddrawex_class_factory_CreateInstance(IClassFactory *iface, IUnknown *outer_unknown, REFIID riid, void **out)
Definition: main.c:90
static HRESULT WINAPI ddrawex_class_factory_LockServer(IClassFactory *iface, BOOL dolock)
Definition: main.c:101
static HRESULT WINAPI ddrawex_class_factory_QueryInterface(IClassFactory *iface, REFIID riid, void **out)
Definition: main.c:49

Definition at line 108 of file main.c.

Referenced by DllGetClassObject().

◆ ddrawex_factory_vtbl

const IDirectDrawFactoryVtbl ddrawex_factory_vtbl
static
Initial value:
=
{
}
HRESULT WINAPI ddrawex_factory_CreateDirectDraw(IDirectDrawFactory *iface, GUID *guid, HWND window, DWORD coop_level, DWORD reserved, IUnknown *outer_unknown, IDirectDraw **ddraw)
Definition: ddraw.c:1415
static ULONG WINAPI ddrawex_factory_AddRef(IDirectDrawFactory *iface)
Definition: main.c:146
static HRESULT WINAPI ddrawex_factory_DirectDrawEnumerate(IDirectDrawFactory *iface, LPDDENUMCALLBACKW cb, void *ctx)
Definition: main.c:169
static ULONG WINAPI ddrawex_factory_Release(IDirectDrawFactory *iface)
Definition: main.c:156

Definition at line 177 of file main.c.

Referenced by ddrawex_factory_create().