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

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (devenum)
 
static HRESULT WINAPI devenum_parser_QueryInterface (IParseDisplayName *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI devenum_parser_AddRef (IParseDisplayName *iface)
 
static ULONG WINAPI devenum_parser_Release (IParseDisplayName *iface)
 
static HRESULT WINAPI devenum_parser_ParseDisplayName (IParseDisplayName *iface, IBindCtx *pbc, LPOLESTR name, ULONG *eaten, IMoniker **ret)
 

Variables

static const IParseDisplayNameVtbl IParseDisplayName_Vtbl
 
IParseDisplayName devenum_parser = { &IParseDisplayName_Vtbl }
 

Function Documentation

◆ devenum_parser_AddRef()

static ULONG WINAPI devenum_parser_AddRef ( IParseDisplayName *  iface)
static

Definition at line 50 of file parsedisplayname.c.

51{
52 TRACE("\n");
53
54 return 2; /* non-heap based object */
55}
#define TRACE(s)
Definition: solgame.cpp:4

◆ devenum_parser_ParseDisplayName()

static HRESULT WINAPI devenum_parser_ParseDisplayName ( IParseDisplayName *  iface,
IBindCtx *  pbc,
LPOLESTR  name,
ULONG *  eaten,
IMoniker **  ret 
)
static

Definition at line 64 of file parsedisplayname.c.

66{
67 struct moniker *moniker;
69 enum device_type type;
70 GUID class, clsid;
71
72 TRACE("(%p, %s, %p, %p)\n", pbc, debugstr_w(name), eaten, ret);
73
74 *ret = NULL;
75 if (eaten)
76 *eaten = wcslen(name);
77
78 name = wcschr(name, ':') + 1;
79
80 if (!wcsncmp(name, L"sw:", 3))
81 {
83 name += 3;
84 }
85 else if (!wcsncmp(name, L"cm:", 3))
86 {
88 name += 3;
89 }
90 else if (!wcsncmp(name, L"dmo:", 4))
91 {
93 name += 4;
94 }
95 else
96 {
97 FIXME("unhandled device type %s\n", debugstr_w(name));
98 return MK_E_SYNTAX;
99 }
100
101 if (type == DEVICE_DMO)
102 {
105 return MK_E_SYNTAX;
106
108 if (FAILED(CLSIDFromString(buffer, &class)))
109 return MK_E_SYNTAX;
110
112 }
113 else
114 {
116 if (CLSIDFromString(buffer, &class) == S_OK)
117 {
119 if (type == DEVICE_FILTER)
121 else
123 }
124 else
125 {
126 if (type == DEVICE_FILTER)
128 else
130 }
131 }
132
133 if (!moniker)
134 return E_OUTOFMEMORY;
135
137 return S_OK;
138}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define CHARS_IN_GUID
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
struct moniker * filter_moniker_create(const GUID *class, const WCHAR *name)
Definition: mediacatenum.c:796
struct moniker * codec_moniker_create(const GUID *class, const WCHAR *name)
Definition: mediacatenum.c:815
struct moniker * dmo_moniker_create(const GUID class, const GUID clsid)
Definition: mediacatenum.c:834
device_type
@ DEVICE_FILTER
@ DEVICE_DMO
@ DEVICE_CODEC
#define NULL
Definition: types.h:112
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
Definition: combase.c:1470
#define wcschr
Definition: compat.h:17
#define MAX_PATH
Definition: compat.h:34
#define lstrcpynW
Definition: compat.h:738
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
Definition: wcs.c:523
return ret
Definition: mutex.c:147
#define L(x)
Definition: resources.c:13
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint buffer
Definition: glext.h:5915
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
const CLSID * clsid
Definition: msctf.cpp:50
short WCHAR
Definition: pedump.c:58
IMoniker IMoniker_iface
Definition: name.c:39
#define MK_E_SYNTAX
Definition: winerror.h:3896

◆ devenum_parser_QueryInterface()

static HRESULT WINAPI devenum_parser_QueryInterface ( IParseDisplayName *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 30 of file parsedisplayname.c.

31{
32 TRACE("\n\tIID:\t%s\n",debugstr_guid(riid));
33
34 if (!ppv)
35 return E_POINTER;
36
39 {
40 *ppv = iface;
41 IParseDisplayName_AddRef(iface);
42 return S_OK;
43 }
44
45 FIXME("- no interface IID: %s\n", debugstr_guid(riid));
46 *ppv = NULL;
47 return E_NOINTERFACE;
48}
const GUID IID_IUnknown
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IParseDisplayName
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_POINTER
Definition: winerror.h:3480

◆ devenum_parser_Release()

static ULONG WINAPI devenum_parser_Release ( IParseDisplayName *  iface)
static

Definition at line 57 of file parsedisplayname.c.

58{
59 TRACE("\n");
60
61 return 1; /* non-heap based object */
62}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( devenum  )

Variable Documentation

◆ devenum_parser

Definition at line 152 of file parsedisplayname.c.

◆ IParseDisplayName_Vtbl

const IParseDisplayNameVtbl IParseDisplayName_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI devenum_parser_ParseDisplayName(IParseDisplayName *iface, IBindCtx *pbc, LPOLESTR name, ULONG *eaten, IMoniker **ret)
static ULONG WINAPI devenum_parser_AddRef(IParseDisplayName *iface)
static HRESULT WINAPI devenum_parser_QueryInterface(IParseDisplayName *iface, REFIID riid, void **ppv)
static ULONG WINAPI devenum_parser_Release(IParseDisplayName *iface)

Definition at line 143 of file parsedisplayname.c.