ReactOS 0.4.17-dev-923-g4c9a150
client.c
Go to the documentation of this file.
1 /*
2 * DirectPlay Voice Client Interface
3 *
4 * Copyright (C) 2014 Alistair Leslie-Hughes
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
23#define COBJMACROS
24#include "windef.h"
25#include "winbase.h"
26#include "wingdi.h"
27#include "winuser.h"
28#include "objbase.h"
29
30#include "wine/debug.h"
31
32#include "dvoice.h"
33#include "dvoice_private.h"
34
36
38{
39 IDirectPlayVoiceClient IDirectPlayVoiceClient_iface;
42
44{
45 IDirectPlayVoiceTest IDirectPlayVoiceTest_iface;
48
49static inline IDirectPlayVoiceClientImpl *impl_from_IDirectPlayVoiceClient(IDirectPlayVoiceClient *iface)
50{
51 return CONTAINING_RECORD(iface, IDirectPlayVoiceClientImpl, IDirectPlayVoiceClient_iface);
52}
53
54static inline IDirectPlayVoiceTestImpl *impl_from_IDirectPlayVoiceTest(IDirectPlayVoiceTest *iface)
55{
56 return CONTAINING_RECORD(iface, IDirectPlayVoiceTestImpl, IDirectPlayVoiceTest_iface);
57}
58
59static HRESULT WINAPI dpvclient_QueryInterface(IDirectPlayVoiceClient *iface, REFIID riid, void **ppv)
60{
61 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlayVoiceClient))
62 {
63 IUnknown_AddRef(iface);
64 *ppv = iface;
65 return S_OK;
66 }
67
68 WARN("(%p)->(%s,%p),not found\n", iface, debugstr_guid(riid), ppv);
69 return E_NOINTERFACE;
70}
71
72static ULONG WINAPI dpvclient_AddRef(IDirectPlayVoiceClient *iface)
73{
76
77 TRACE("(%p) ref=%lu\n", This, ref);
78
79 return ref;
80}
81
82static ULONG WINAPI dpvclient_Release(IDirectPlayVoiceClient *iface)
83{
86
87 TRACE("(%p) ref=%lu\n", This, ref);
88
89 if (!ref)
90 {
92 }
93 return ref;
94}
95
96static HRESULT WINAPI dpvclient_Initialize(IDirectPlayVoiceClient *iface,LPUNKNOWN pVoid, PDVMESSAGEHANDLER pMessageHandler,
97 void *pUserContext, DWORD *pdwMessageMask, DWORD dwMessageMaskElements)
98{
100 FIXME("%p %p %p %p %p %ld\n", This, pVoid, pMessageHandler, pUserContext,pdwMessageMask, dwMessageMaskElements);
101 return E_NOTIMPL;
102}
103
104static HRESULT WINAPI dpvclient_Connect(IDirectPlayVoiceClient *iface, PDVSOUNDDEVICECONFIG pSoundDeviceConfig,
105 PDVCLIENTCONFIG pdvClientConfig, DWORD dwFlags)
106{
108 FIXME("%p %p %p %ld\n", This, pSoundDeviceConfig, pdvClientConfig, dwFlags);
109 return E_NOTIMPL;
110}
111
112static HRESULT WINAPI dpvclient_Disconnect(IDirectPlayVoiceClient *iface, DWORD dwFlags)
113{
115 FIXME("%p %ld\n", This, dwFlags);
116 return E_NOTIMPL;
117}
118
119static HRESULT WINAPI dpvclient_GetSessionDesc(IDirectPlayVoiceClient *iface, PDVSESSIONDESC pvSessionDesc)
120{
122 FIXME("%p %p\n", This, pvSessionDesc);
123 return E_NOTIMPL;
124}
125
126static HRESULT WINAPI dpvclient_GetClientConfig(IDirectPlayVoiceClient *iface, PDVCLIENTCONFIG pClientConfig)
127{
129 FIXME("%p %p\n", This, pClientConfig);
130 return E_NOTIMPL;
131}
132
133static HRESULT WINAPI dpvclient_SetClientConfig(IDirectPlayVoiceClient *iface, PDVCLIENTCONFIG pClientConfig)
134{
136 FIXME("%p %p\n", This, pClientConfig);
137 return E_NOTIMPL;
138}
139
140static HRESULT WINAPI dpvclient_GetCaps(IDirectPlayVoiceClient *iface, PDVCAPS pCaps)
141{
143 FIXME("%p %p\n", This, pCaps);
144 return E_NOTIMPL;
145}
146
147static HRESULT WINAPI dpvclient_GetCompressionTypes(IDirectPlayVoiceClient *iface, void *pData,
148 DWORD *pdwDataSize, DWORD *pdwNumElements, DWORD dwFlags)
149{
151 FIXME("%p %p %p %p %ld semi-stub\n", This, pData, pdwDataSize, pdwNumElements, dwFlags);
152 return DPVOICE_GetCompressionTypes(pData, pdwDataSize, pdwNumElements, dwFlags);
153}
154
155static HRESULT WINAPI dpvclient_SetTransmitTargets(IDirectPlayVoiceClient *iface, PDVID pdvIDTargets,
156 DWORD dwNumTargets, DWORD dwFlags)
157{
159 FIXME("%p %p %ld %ld\n", This, pdvIDTargets, dwNumTargets, dwFlags);
160 return E_NOTIMPL;
161}
162
163static HRESULT WINAPI dpvclient_GetTransmitTargets(IDirectPlayVoiceClient *iface, PDVID pdvIDTargets,
164 DWORD *pdwNumTargets, DWORD dwFlags)
165{
167 FIXME("%p %p %ld\n", This, pdwNumTargets, dwFlags);
168 return E_NOTIMPL;
169}
170
171static HRESULT WINAPI dpvclient_Create3DSoundBuffer(IDirectPlayVoiceClient *iface, DVID dvID,
172 LPDIRECTSOUNDBUFFER lpdsSourceBuffer, DWORD dwPriority, DWORD dwFlags,
173 LPDIRECTSOUND3DBUFFER *lpUserBuffer)
174{
176 FIXME("%p %ld %p %ld %ld %p\n", This, dvID, lpdsSourceBuffer, dwPriority, dwFlags, lpUserBuffer);
177 return E_NOTIMPL;
178}
179
180static HRESULT WINAPI dpvclient_Delete3DSoundBuffer(IDirectPlayVoiceClient *iface, DVID dvID, LPDIRECTSOUND3DBUFFER *lpUserBuffer)
181{
183 FIXME("%p %ld %p\n", This, dvID, lpUserBuffer);
184 return E_NOTIMPL;
185}
186
187static HRESULT WINAPI dpvclient_SetNotifyMask(IDirectPlayVoiceClient *iface, DWORD *pdwMessageMask, DWORD dwMessageMaskElements)
188{
190 FIXME("%p %p %ld\n", This, pdwMessageMask, dwMessageMaskElements);
191 return E_NOTIMPL;
192}
193
194static HRESULT WINAPI dpvclient_GetSoundDeviceConfig(IDirectPlayVoiceClient *iface, PDVSOUNDDEVICECONFIG pSoundDeviceConfig,
195 DWORD *pdwSize)
196{
198 FIXME("%p %p %p\n", This, pSoundDeviceConfig, pdwSize);
199 return E_NOTIMPL;
200}
201
202
203static const IDirectPlayVoiceClientVtbl DirectPlayVoiceClient_Vtbl =
204{
222};
223
225{
227 HRESULT ret;
228
229 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppobj);
230
231 *ppobj = NULL;
232
234 if (!client)
235 return E_OUTOFMEMORY;
236
237 client->IDirectPlayVoiceClient_iface.lpVtbl = &DirectPlayVoiceClient_Vtbl;
238 client->ref = 1;
239
240 ret = IDirectPlayVoiceClient_QueryInterface(&client->IDirectPlayVoiceClient_iface, riid, ppobj);
241 IDirectPlayVoiceClient_Release(&client->IDirectPlayVoiceClient_iface);
242
243 return ret;
244}
245
246static HRESULT WINAPI dpvtest_QueryInterface(IDirectPlayVoiceTest *iface, REFIID riid, void **ppv)
247{
248 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlayVoiceTest))
249 {
250 IUnknown_AddRef(iface);
251 *ppv = iface;
252 return S_OK;
253 }
254
255 WARN("(%p)->(%s,%p),not found\n", iface, debugstr_guid(riid), ppv);
256 return E_NOINTERFACE;
257}
258
259static ULONG WINAPI dpvtest_AddRef(IDirectPlayVoiceTest *iface)
260{
263
264 TRACE("(%p) ref=%lu\n", This, ref);
265
266 return ref;
267}
268
269static ULONG WINAPI dpvtest_Release(IDirectPlayVoiceTest *iface)
270{
273
274 TRACE("(%p) ref=%lu\n", This, ref);
275
276 if (!ref)
277 {
279 }
280 return ref;
281}
282
283static HRESULT WINAPI dpvtest_CheckAudioSetup(IDirectPlayVoiceTest *iface, const GUID *pguidPlaybackDevice, const GUID *pguidCaptureDevice,
285{
287 FIXME("%p %s %s %p %ld\n", This, debugstr_guid(pguidPlaybackDevice),
288 debugstr_guid(pguidCaptureDevice), hwndParent, dwFlags);
289 return E_NOTIMPL;
290}
291
292static const IDirectPlayVoiceTestVtbl DirectPlayVoiceTest_Vtbl =
293{
298};
299
301{
303 HRESULT ret;
304
305 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppobj);
306
307 *ppobj = NULL;
308
310 if (!test)
311 return E_OUTOFMEMORY;
312
313 test->IDirectPlayVoiceTest_iface.lpVtbl = &DirectPlayVoiceTest_Vtbl;
314 test->ref = 1;
315
316 ret = IDirectPlayVoiceTest_QueryInterface(&test->IDirectPlayVoiceTest_iface, riid, ppobj);
317 IDirectPlayVoiceTest_Release(&test->IDirectPlayVoiceTest_iface);
318
319 return ret;
320}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
static HWND hwndParent
Definition: cryptui.c:299
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
static LPVOID LPUNKNOWN
Definition: dinput.c:53
#define NULL
Definition: types.h:112
HRESULT DPVOICE_CreateDirectPlayVoiceTest(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppobj)
Definition: client.c:300
static HRESULT WINAPI dpvclient_GetCaps(IDirectPlayVoiceClient *iface, PDVCAPS pCaps)
Definition: client.c:140
static HRESULT WINAPI dpvclient_Initialize(IDirectPlayVoiceClient *iface, LPUNKNOWN pVoid, PDVMESSAGEHANDLER pMessageHandler, void *pUserContext, DWORD *pdwMessageMask, DWORD dwMessageMaskElements)
Definition: client.c:96
static ULONG WINAPI dpvtest_AddRef(IDirectPlayVoiceTest *iface)
Definition: client.c:259
static const IDirectPlayVoiceClientVtbl DirectPlayVoiceClient_Vtbl
Definition: client.c:203
static ULONG WINAPI dpvclient_AddRef(IDirectPlayVoiceClient *iface)
Definition: client.c:72
static HRESULT WINAPI dpvclient_SetNotifyMask(IDirectPlayVoiceClient *iface, DWORD *pdwMessageMask, DWORD dwMessageMaskElements)
Definition: client.c:187
static ULONG WINAPI dpvtest_Release(IDirectPlayVoiceTest *iface)
Definition: client.c:269
static HRESULT WINAPI dpvclient_SetClientConfig(IDirectPlayVoiceClient *iface, PDVCLIENTCONFIG pClientConfig)
Definition: client.c:133
HRESULT DPVOICE_CreateDirectPlayVoiceClient(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppobj)
Definition: client.c:224
static HRESULT WINAPI dpvclient_GetSessionDesc(IDirectPlayVoiceClient *iface, PDVSESSIONDESC pvSessionDesc)
Definition: client.c:119
static HRESULT WINAPI dpvclient_SetTransmitTargets(IDirectPlayVoiceClient *iface, PDVID pdvIDTargets, DWORD dwNumTargets, DWORD dwFlags)
Definition: client.c:155
static HRESULT WINAPI dpvclient_QueryInterface(IDirectPlayVoiceClient *iface, REFIID riid, void **ppv)
Definition: client.c:59
static ULONG WINAPI dpvclient_Release(IDirectPlayVoiceClient *iface)
Definition: client.c:82
static HRESULT WINAPI dpvtest_QueryInterface(IDirectPlayVoiceTest *iface, REFIID riid, void **ppv)
Definition: client.c:246
static HRESULT WINAPI dpvtest_CheckAudioSetup(IDirectPlayVoiceTest *iface, const GUID *pguidPlaybackDevice, const GUID *pguidCaptureDevice, HWND hwndParent, DWORD dwFlags)
Definition: client.c:283
static HRESULT WINAPI dpvclient_Create3DSoundBuffer(IDirectPlayVoiceClient *iface, DVID dvID, LPDIRECTSOUNDBUFFER lpdsSourceBuffer, DWORD dwPriority, DWORD dwFlags, LPDIRECTSOUND3DBUFFER *lpUserBuffer)
Definition: client.c:171
static HRESULT WINAPI dpvclient_GetSoundDeviceConfig(IDirectPlayVoiceClient *iface, PDVSOUNDDEVICECONFIG pSoundDeviceConfig, DWORD *pdwSize)
Definition: client.c:194
static HRESULT WINAPI dpvclient_Disconnect(IDirectPlayVoiceClient *iface, DWORD dwFlags)
Definition: client.c:112
static HRESULT WINAPI dpvclient_Delete3DSoundBuffer(IDirectPlayVoiceClient *iface, DVID dvID, LPDIRECTSOUND3DBUFFER *lpUserBuffer)
Definition: client.c:180
static IDirectPlayVoiceClientImpl * impl_from_IDirectPlayVoiceClient(IDirectPlayVoiceClient *iface)
Definition: client.c:49
static HRESULT WINAPI dpvclient_GetCompressionTypes(IDirectPlayVoiceClient *iface, void *pData, DWORD *pdwDataSize, DWORD *pdwNumElements, DWORD dwFlags)
Definition: client.c:147
static HRESULT WINAPI dpvclient_GetClientConfig(IDirectPlayVoiceClient *iface, PDVCLIENTCONFIG pClientConfig)
Definition: client.c:126
static IDirectPlayVoiceTestImpl * impl_from_IDirectPlayVoiceTest(IDirectPlayVoiceTest *iface)
Definition: client.c:54
static HRESULT WINAPI dpvclient_Connect(IDirectPlayVoiceClient *iface, PDVSOUNDDEVICECONFIG pSoundDeviceConfig, PDVCLIENTCONFIG pdvClientConfig, DWORD dwFlags)
Definition: client.c:104
static const IDirectPlayVoiceTestVtbl DirectPlayVoiceTest_Vtbl
Definition: client.c:292
static HRESULT WINAPI dpvclient_GetTransmitTargets(IDirectPlayVoiceClient *iface, PDVID pdvIDTargets, DWORD *pdwNumTargets, DWORD dwFlags)
Definition: client.c:163
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
return ret
Definition: mutex.c:147
struct IDirectSoundBuffer * LPDIRECTSOUNDBUFFER
Definition: dsound.h:76
struct IDirectSound3DBuffer * LPDIRECTSOUND3DBUFFER
Definition: dsound.h:89
HRESULT(PASCAL * PDVMESSAGEHANDLER)(PVOID pvUserContext, DWORD dwMessageType, LPVOID lpMessage)
Definition: dvoice.h:57
#define IDirectPlayVoiceClient_Release(p)
Definition: dvoice.h:418
DWORD DVID
Definition: dvoice.h:60
#define IDirectPlayVoiceClient_QueryInterface(p, a, b)
Definition: dvoice.h:416
#define IDirectPlayVoiceTest_Release(p)
Definition: dvoice.h:451
DWORD * PDVID
Definition: dvoice.h:60
#define IDirectPlayVoiceTest_QueryInterface(p, a, b)
Definition: dvoice.h:449
HRESULT DPVOICE_GetCompressionTypes(DVCOMPRESSIONINFO *pData, DWORD *pdwDataSize, DWORD *pdwNumElements, DWORD dwFlags)
Definition: server.c:42
unsigned long DWORD
Definition: ntddk_ex.h:95
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define debugstr_guid
Definition: kernel32.h:35
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define test
Definition: rosglue.h:37
static FILE * client
Definition: client.c:37
#define TRACE(s)
Definition: solgame.cpp:4
Definition: dvoice.h:143
IDirectPlayVoiceClient IDirectPlayVoiceClient_iface
Definition: client.c:39
IDirectPlayVoiceTest IDirectPlayVoiceTest_iface
Definition: client.c:45
Definition: send.c:48
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:3479