ReactOS 0.4.17-dev-966-gf06eace
devenum_main.c File Reference
#include "devenum_private.h"
#include "rpcproxy.h"
#include "wine/debug.h"
Include dependency graph for devenum_main.c:

Go to the source code of this file.

Classes

struct  class_factory
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (devenum)
 
static struct class_factory * impl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI ClassFactory_QueryInterface (IClassFactory *iface, REFIID iid, void **obj)
 
static ULONG WINAPI ClassFactory_AddRef (IClassFactory *iface)
 
static ULONG WINAPI ClassFactory_Release (IClassFactory *iface)
 
static HRESULT WINAPI ClassFactory_CreateInstance (IClassFactory *iface, IUnknown *outer, REFIID iid, void **obj)
 
static HRESULT WINAPI ClassFactory_LockServer (IClassFactory *iface, BOOL lock)
 
HRESULT WINAPI DllGetClassObject (REFCLSID clsid, REFIID iid, void **obj)
 
HRESULT WINAPI DllRegisterServer (void)
 
HRESULT WINAPI DllUnregisterServer (void)
 

Variables

static const IClassFactoryVtbl ClassFactory_vtbl
 
static struct class_factory create_devenum_cf = { { &ClassFactory_vtbl }, (IUnknown *)&devenum_factory }
 
static struct class_factory device_moniker_cf = { { &ClassFactory_vtbl }, (IUnknown *)&devenum_parser }
 

Function Documentation

◆ ClassFactory_AddRef()

static ULONG WINAPI ClassFactory_AddRef ( IClassFactory *  iface)
static

Definition at line 55 of file devenum_main.c.

56{
57 return 2;
58}

◆ ClassFactory_CreateInstance()

static HRESULT WINAPI ClassFactory_CreateInstance ( IClassFactory *  iface,
IUnknown *  outer,
REFIID  iid,
void **  obj 
)
static

Definition at line 65 of file devenum_main.c.

67{
69
70 TRACE("(%p, %s, %p)\n", outer, debugstr_guid(iid), obj);
71
72 if (!obj) return E_POINTER;
73
74 if (outer) return CLASS_E_NOAGGREGATION;
75
76 return IUnknown_QueryInterface(This->obj, iid, obj);
77}
static struct class_factory * impl_from_IClassFactory(IClassFactory *iface)
Definition: devenum_main.c:34
#define debugstr_guid
Definition: kernel32.h:35
static IUnknown * outer
Definition: compobj.c:82
#define TRACE(s)
Definition: solgame.cpp:4
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771
#define E_POINTER
Definition: winerror.h:3480

◆ ClassFactory_LockServer()

static HRESULT WINAPI ClassFactory_LockServer ( IClassFactory *  iface,
BOOL  lock 
)
static

Definition at line 79 of file devenum_main.c.

80{
81 TRACE("iface %p, lock %d.\n", iface, lock);
82 return S_OK;
83}
#define S_OK
Definition: intsafe.h:52
rwlock_t lock
Definition: tcpcore.h:0

◆ ClassFactory_QueryInterface()

static HRESULT WINAPI ClassFactory_QueryInterface ( IClassFactory *  iface,
REFIID  iid,
void **  obj 
)
static

Definition at line 39 of file devenum_main.c.

40{
41 TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), obj);
42
44 {
45 IClassFactory_AddRef(iface);
46 *obj = iface;
47 return S_OK;
48 }
49
50 *obj = NULL;
51 WARN("no interface for %s\n", debugstr_guid(iid));
52 return E_NOINTERFACE;
53}
#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

◆ ClassFactory_Release()

static ULONG WINAPI ClassFactory_Release ( IClassFactory *  iface)
static

Definition at line 60 of file devenum_main.c.

61{
62 return 1;
63}

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  clsid,
REFIID  iid,
void **  obj 
)

Definition at line 99 of file devenum_main.c.

100{
101 TRACE("(%s, %s, %p)\n", debugstr_guid(clsid), debugstr_guid(iid), obj);
102
103 *obj = NULL;
104
105 if (IsEqualGUID(clsid, &CLSID_SystemDeviceEnum))
106 return IClassFactory_QueryInterface(&create_devenum_cf.IClassFactory_iface, iid, obj);
107 else if (IsEqualGUID(clsid, &CLSID_CDeviceMoniker))
108 return IClassFactory_QueryInterface(&device_moniker_cf.IClassFactory_iface, iid, obj);
109
110 FIXME("class %s not available\n", debugstr_guid(clsid));
112}
#define FIXME(fmt,...)
Definition: precomp.h:53
static struct class_factory create_devenum_cf
Definition: devenum_main.c:93
static struct class_factory device_moniker_cf
Definition: devenum_main.c:94
const CLSID * clsid
Definition: msctf.cpp:50
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ DllRegisterServer()

HRESULT WINAPI DllRegisterServer ( void  )

Definition at line 117 of file devenum_main.c.

118{
119 HRESULT res;
120 IFilterMapper2 * pMapper = NULL;
121 LPVOID mapvptr;
122
123 TRACE("\n");
124
126 if (FAILED(res))
127 return res;
128
129 res = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC,
130 &IID_IFilterMapper2, &mapvptr);
131 if (SUCCEEDED(res))
132 {
133 pMapper = mapvptr;
134
135 IFilterMapper2_CreateCategory(pMapper, &CLSID_AudioCompressorCategory, MERIT_DO_NOT_USE, L"Audio Compressors");
136 IFilterMapper2_CreateCategory(pMapper, &CLSID_AudioInputDeviceCategory, MERIT_DO_NOT_USE, L"Audio Capture Sources");
137 IFilterMapper2_CreateCategory(pMapper, &CLSID_AudioRendererCategory, MERIT_NORMAL, L"Audio Renderers");
138 IFilterMapper2_CreateCategory(pMapper, &CLSID_DeviceControlCategory, MERIT_DO_NOT_USE, L"Device Control Filters");
139 IFilterMapper2_CreateCategory(pMapper, &CLSID_LegacyAmFilterCategory, MERIT_NORMAL, L"DirectShow Filters");
140 IFilterMapper2_CreateCategory(pMapper, &CLSID_MidiRendererCategory, MERIT_NORMAL, L"Midi Renderers");
141 IFilterMapper2_CreateCategory(pMapper, &CLSID_TransmitCategory, MERIT_DO_NOT_USE, L"External Renderers");
142 IFilterMapper2_CreateCategory(pMapper, &CLSID_VideoInputDeviceCategory, MERIT_DO_NOT_USE, L"Video Capture Sources");
143 IFilterMapper2_CreateCategory(pMapper, &CLSID_VideoCompressorCategory, MERIT_DO_NOT_USE, L"Video Compressors");
144
145 IFilterMapper2_Release(pMapper);
146 }
147
148 return res;
149}
HRESULT __wine_register_resources(HMODULE module)
Definition: register.c:112
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define L(x)
Definition: resources.c:13
#define MERIT_DO_NOT_USE
Definition: precomp.h:18
GLuint res
Definition: glext.h:9613
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51

◆ DllUnregisterServer()

HRESULT WINAPI DllUnregisterServer ( void  )

Definition at line 154 of file devenum_main.c.

155{
156 FIXME("stub!\n");
158}
HRESULT __wine_unregister_resources(HMODULE module)
Definition: register.c:124

◆ impl_from_IClassFactory()

static struct class_factory * impl_from_IClassFactory ( IClassFactory *  iface)
inlinestatic

Definition at line 34 of file devenum_main.c.

35{
36 return CONTAINING_RECORD( iface, struct class_factory, IClassFactory_iface );
37}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by ClassFactory_CreateInstance().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( devenum  )

Variable Documentation

◆ ClassFactory_vtbl

const IClassFactoryVtbl ClassFactory_vtbl
static
Initial value:
= {
}
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
Definition: devenum_main.c:60
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
Definition: devenum_main.c:55
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL lock)
Definition: devenum_main.c:79
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID iid, void **obj)
Definition: devenum_main.c:39
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID iid, void **obj)
Definition: devenum_main.c:65

Definition at line 85 of file devenum_main.c.

◆ create_devenum_cf

struct class_factory create_devenum_cf = { { &ClassFactory_vtbl }, (IUnknown *)&devenum_factory }
static

Definition at line 93 of file devenum_main.c.

Referenced by DllGetClassObject().

◆ device_moniker_cf

struct class_factory device_moniker_cf = { { &ClassFactory_vtbl }, (IUnknown *)&devenum_parser }
static

Definition at line 94 of file devenum_main.c.

Referenced by DllGetClassObject().