2 * DirectPlay Voice Server Interface
4 * Copyright (C) 2014 Alistair Leslie-Hughes
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.
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.
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
31 #include "wine/unicode.h"
32 #include "wine/debug.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(dpvoice
);
38 typedef struct IDirectPlayVoiceServerImpl
40 IDirectPlayVoiceServer IDirectPlayVoiceServer_iface
;
42 } IDirectPlayVoiceServerImpl
;
44 static inline IDirectPlayVoiceServerImpl
*impl_from_IDirectPlayVoiceServer(IDirectPlayVoiceServer
*iface
)
46 return CONTAINING_RECORD(iface
, IDirectPlayVoiceServerImpl
, IDirectPlayVoiceServer_iface
);
49 static HRESULT WINAPI
dpvserver_QueryInterface(IDirectPlayVoiceServer
*iface
, REFIID riid
, void **ppv
)
51 if (IsEqualGUID(riid
, &IID_IUnknown
) || IsEqualGUID(riid
, &IID_IDirectPlayVoiceServer
))
53 IUnknown_AddRef(iface
);
58 WARN("(%p)->(%s,%p),not found\n", iface
, debugstr_guid(riid
), ppv
);
62 static ULONG WINAPI
dpvserver_AddRef(IDirectPlayVoiceServer
*iface
)
64 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
65 ULONG ref
= InterlockedIncrement(&This
->ref
);
67 TRACE("(%p) ref=%u\n", This
, ref
);
72 static ULONG WINAPI
dpvserver_Release(IDirectPlayVoiceServer
*iface
)
74 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
75 ULONG ref
= InterlockedDecrement(&This
->ref
);
77 TRACE("(%p) ref=%u\n", This
, ref
);
81 HeapFree(GetProcessHeap(), 0, This
);
86 static HRESULT WINAPI
dpvserver_Initialize(IDirectPlayVoiceServer
*iface
, IUnknown
*lpVoid
, PDVMESSAGEHANDLER pMessageHandler
,
87 void *pUserContext
, DWORD
*lpdwMessageMask
, DWORD dwMessageMaskElements
)
89 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
90 FIXME("%p %p %p %p %p %d\n", This
, lpVoid
, pMessageHandler
, pUserContext
,lpdwMessageMask
, dwMessageMaskElements
);
94 static HRESULT WINAPI
dpvserver_StartSession(IDirectPlayVoiceServer
*iface
, PDVSESSIONDESC pSessionDesc
, DWORD dwFlags
)
96 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
97 FIXME("%p %p %d\n", This
, pSessionDesc
, dwFlags
);
101 static HRESULT WINAPI
dpvserver_StopSession(IDirectPlayVoiceServer
*iface
, DWORD dwFlags
)
103 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
104 FIXME("%p %d\n", This
, dwFlags
);
108 static HRESULT WINAPI
dpvserver_GetSessionDesc(IDirectPlayVoiceServer
*iface
, PDVSESSIONDESC pvSessionDesc
)
110 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
111 FIXME("%p %p\n", This
, pvSessionDesc
);
115 static HRESULT WINAPI
dpvserver_SetSessionDesc(IDirectPlayVoiceServer
*iface
, PDVSESSIONDESC pSessionDesc
)
117 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
118 FIXME("%p %p\n", This
, pSessionDesc
);
122 static HRESULT WINAPI
dpvserver_GetCaps(IDirectPlayVoiceServer
*iface
, PDVCAPS pDVCaps
)
124 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
125 FIXME("%p %p\n", This
, pDVCaps
);
129 static HRESULT WINAPI
dpvserver_GetCompressionTypes(IDirectPlayVoiceServer
*iface
, void *pData
, DWORD
*pdwDataSize
,
130 DWORD
*pdwNumElements
, DWORD dwFlags
)
132 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
133 FIXME("%p %p %p %p %d\n", This
, pData
, pdwDataSize
, pdwNumElements
, dwFlags
);
137 static HRESULT WINAPI
dpvserver_SetTransmitTargets(IDirectPlayVoiceServer
*iface
, DVID dvSource
, PDVID pdvIDTargets
,
138 DWORD dwNumTargets
, DWORD dwFlags
)
140 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
141 FIXME("%p %d %p %d %d\n", This
, dvSource
, pdvIDTargets
, dwNumTargets
, dwFlags
);
145 static HRESULT WINAPI
dpvserver_GetTransmitTargets(IDirectPlayVoiceServer
*iface
, DVID dvSource
, PDVID pdvIDTargets
,
146 DWORD
*pdwNumTargets
, DWORD dwFlags
)
148 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
149 FIXME("%p %d %p %p %d\n", This
, dvSource
, pdvIDTargets
, pdwNumTargets
, dwFlags
);
153 static HRESULT WINAPI
dpvserver_SetNotifyMask(IDirectPlayVoiceServer
*iface
, DWORD
*pdwMessageMask
, DWORD dwMessageMaskElements
)
155 IDirectPlayVoiceServerImpl
*This
= impl_from_IDirectPlayVoiceServer(iface
);
156 FIXME("%p %p %d\n", This
, pdwMessageMask
, dwMessageMaskElements
);
160 static const IDirectPlayVoiceServerVtbl DirectPlayVoiceServer_Vtbl
=
162 dpvserver_QueryInterface
,
165 dpvserver_Initialize
,
166 dpvserver_StartSession
,
167 dpvserver_StopSession
,
168 dpvserver_GetSessionDesc
,
169 dpvserver_SetSessionDesc
,
171 dpvserver_GetCompressionTypes
,
172 dpvserver_SetTransmitTargets
,
173 dpvserver_GetTransmitTargets
,
174 dpvserver_SetNotifyMask
177 HRESULT
DPVOICE_CreateDirectPlayVoiceServer(IClassFactory
*iface
, IUnknown
*pUnkOuter
, REFIID riid
, void **ppobj
)
179 IDirectPlayVoiceServerImpl
* server
;
182 TRACE("(%p, %s, %p)\n", pUnkOuter
, debugstr_guid(riid
), ppobj
);
186 server
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirectPlayVoiceServerImpl
));
188 return E_OUTOFMEMORY
;
190 server
->IDirectPlayVoiceServer_iface
.lpVtbl
= &DirectPlayVoiceServer_Vtbl
;
193 ret
= IDirectPlayVoiceServer_QueryInterface(&server
->IDirectPlayVoiceServer_iface
, riid
, ppobj
);
194 IDirectPlayVoiceServer_Release(&server
->IDirectPlayVoiceServer_iface
);