ReactOS 0.4.17-dev-934-g091855f
dswave_main.c File Reference
#include <stdio.h>
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winnt.h"
#include "wingdi.h"
#include "winuser.h"
#include "winreg.h"
#include "objbase.h"
#include "rpcproxy.h"
#include "initguid.h"
#include "dmusici.h"
#include "dswave_private.h"
#include "dmusic_wave.h"
#include "dmobject.h"
Include dependency graph for dswave_main.c:

Go to the source code of this file.

Classes

struct  IClassFactoryImpl
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dswave)
 
static HRESULT WINAPI WaveCF_QueryInterface (IClassFactory *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI WaveCF_AddRef (IClassFactory *iface)
 
static ULONG WINAPI WaveCF_Release (IClassFactory *iface)
 
static HRESULT WINAPI WaveCF_CreateInstance (IClassFactory *iface, IUnknown *outer_unk, REFIID riid, void **ret_iface)
 
static HRESULT WINAPI WaveCF_LockServer (IClassFactory *iface, BOOL dolock)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 

Variables

static const IClassFactoryVtbl WaveCF_Vtbl
 
static IClassFactoryImpl Wave_CF = {{&WaveCF_Vtbl}}
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file dswave_main.c.

Function Documentation

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
LPVOID *  ppv 
)

Definition at line 117 of file dswave_main.c.

118{
119 TRACE("(%s, %s, %p)\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
120 if (IsEqualCLSID (rclsid, &CLSID_DirectSoundWave) && IsEqualIID (riid, &IID_IClassFactory)) {
121 *ppv = &Wave_CF;
122 IClassFactory_AddRef((IClassFactory*)*ppv);
123 return S_OK;
124 }
125
126 WARN("(%s, %s, %p): no interface found.\n", debugstr_dmguid(rclsid), debugstr_dmguid(riid), ppv);
128}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IClassFactory
const char * debugstr_dmguid(const GUID *id)
Definition: dmobject.c:36
static IClassFactoryImpl Wave_CF
Definition: dswave_main.c:110
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define TRACE(s)
Definition: solgame.cpp:4
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ WaveCF_AddRef()

static ULONG WINAPI WaveCF_AddRef ( IClassFactory *  iface)
static

Definition at line 70 of file dswave_main.c.

71{
72 return 2; /* non-heap based object */
73}

◆ WaveCF_CreateInstance()

static HRESULT WINAPI WaveCF_CreateInstance ( IClassFactory *  iface,
IUnknown *  outer_unk,
REFIID  riid,
void **  ret_iface 
)
static

Definition at line 80 of file dswave_main.c.

82{
83 IDirectMusicObject *object;
84 HRESULT hr;
85
86 TRACE("(%p, %s, %p)\n", outer_unk, debugstr_dmguid(riid), ret_iface);
87
88 *ret_iface = NULL;
89 if (outer_unk) return CLASS_E_NOAGGREGATION;
90 if (FAILED(hr = wave_create(&object))) return hr;
91 hr = IDirectMusicObject_QueryInterface(object, riid, ret_iface);
93 return hr;
94}
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
HRESULT wave_create(IDirectMusicObject **ret_iface)
Definition: wave.c:277
#define IDirectMusicObject_QueryInterface(p, a, b)
Definition: dmusici.h:842
#define IDirectMusicObject_Release(p)
Definition: dmusici.h:844
#define FAILED(hr)
Definition: intsafe.h:51
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

◆ WaveCF_LockServer()

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

Definition at line 96 of file dswave_main.c.

97{
98 TRACE("(%d)\n", dolock);
99 return S_OK;
100}

◆ WaveCF_QueryInterface()

static HRESULT WINAPI WaveCF_QueryInterface ( IClassFactory *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 50 of file dswave_main.c.

51{
52 if (ppv == NULL)
53 return E_POINTER;
54
56 TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
58 TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
59 else {
60 FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
61 *ppv = NULL;
62 return E_NOINTERFACE;
63 }
64
65 *ppv = iface;
66 IUnknown_AddRef((IUnknown*)*ppv);
67 return S_OK;
68}
#define FIXME(fmt,...)
Definition: precomp.h:53
const GUID IID_IUnknown
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_POINTER
Definition: winerror.h:3480

◆ WaveCF_Release()

static ULONG WINAPI WaveCF_Release ( IClassFactory *  iface)
static

Definition at line 75 of file dswave_main.c.

76{
77 return 1; /* non-heap based object */
78}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dswave  )

Variable Documentation

◆ Wave_CF

IClassFactoryImpl Wave_CF = {{&WaveCF_Vtbl}}
static

Definition at line 110 of file dswave_main.c.

Referenced by DllGetClassObject().

◆ WaveCF_Vtbl

const IClassFactoryVtbl WaveCF_Vtbl
static
Initial value:
= {
}
static ULONG WINAPI WaveCF_Release(IClassFactory *iface)
Definition: dswave_main.c:75
static HRESULT WINAPI WaveCF_CreateInstance(IClassFactory *iface, IUnknown *outer_unk, REFIID riid, void **ret_iface)
Definition: dswave_main.c:80
static HRESULT WINAPI WaveCF_LockServer(IClassFactory *iface, BOOL dolock)
Definition: dswave_main.c:96
static ULONG WINAPI WaveCF_AddRef(IClassFactory *iface)
Definition: dswave_main.c:70
static HRESULT WINAPI WaveCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
Definition: dswave_main.c:50

Definition at line 102 of file dswave_main.c.