vbscript: Implemented Sgn.
[wine/multimedia.git] / dlls / dpnet / client.c
blobabcc5f7dd7ac2454ec164b988c684e930e598500
1 /*
2 * DirectPlay8 Client
3 *
4 * Copyright 2004 Raphael Junqueira
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
22 #include "config.h"
24 #include <stdarg.h>
26 #define COBJMACROS
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wingdi.h"
30 #include "winuser.h"
31 #include "objbase.h"
32 #include "wine/debug.h"
34 #include "dplay8.h"
35 #include "dpnet_private.h"
37 WINE_DEFAULT_DEBUG_CHANNEL(dpnet);
39 static inline IDirectPlay8ClientImpl *impl_from_IDirectPlay8Client(IDirectPlay8Client *iface)
41 return CONTAINING_RECORD(iface, IDirectPlay8ClientImpl, IDirectPlay8Client_iface);
44 /* IDirectPlay8Client IUnknown parts follow: */
45 static HRESULT WINAPI IDirectPlay8ClientImpl_QueryInterface(IDirectPlay8Client *iface, REFIID riid,
46 void **ppobj)
48 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
50 if (IsEqualGUID(riid, &IID_IUnknown)
51 || IsEqualGUID(riid, &IID_IDirectPlay8Client)) {
52 IUnknown_AddRef(iface);
53 *ppobj = This;
54 return DPN_OK;
57 WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
58 return E_NOINTERFACE;
61 static ULONG WINAPI IDirectPlay8ClientImpl_AddRef(IDirectPlay8Client *iface)
63 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
64 ULONG ref = InterlockedIncrement(&This->ref);
66 TRACE("(%p) ref=%u\n", This, ref);
68 return ref;
71 static ULONG WINAPI IDirectPlay8ClientImpl_Release(IDirectPlay8Client *iface)
73 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
74 ULONG ref = InterlockedDecrement(&This->ref);
76 TRACE("(%p) ref=%u\n", This, ref);
78 if (!ref) {
79 HeapFree(GetProcessHeap(), 0, This);
81 return ref;
84 /* IDirectPlay8Client Interface follow: */
86 static HRESULT WINAPI IDirectPlay8ClientImpl_Initialize(IDirectPlay8Client *iface,
87 void * const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags)
89 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
91 TRACE("(%p):(%p,%p,%x)\n", This, pvUserContext, pfn, dwFlags);
93 if(!pfn)
94 return DPNERR_INVALIDPARAM;
96 This->usercontext = pvUserContext;
97 This->msghandler = pfn;
98 This->flags = dwFlags;
100 return DPN_OK;
103 static HRESULT WINAPI IDirectPlay8ClientImpl_EnumServiceProviders(IDirectPlay8Client *iface,
104 const GUID * const pguidServiceProvider, const GUID * const pguidApplication,
105 DPN_SERVICE_PROVIDER_INFO * const pSPInfoBuffer, PDWORD const pcbEnumData,
106 PDWORD const pcReturned, const DWORD dwFlags)
108 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
109 FIXME("(%p):(%x): Stub\n", This, dwFlags);
110 return DPN_OK;
113 static HRESULT WINAPI IDirectPlay8ClientImpl_EnumHosts(IDirectPlay8Client *iface,
114 PDPN_APPLICATION_DESC const pApplicationDesc, IDirectPlay8Address * const pAddrHost,
115 IDirectPlay8Address * const pDeviceInfo, void * const pUserEnumData,
116 const DWORD dwUserEnumDataSize, const DWORD dwEnumCount, const DWORD dwRetryInterval,
117 const DWORD dwTimeOut, void * const pvUserContext, DPNHANDLE * const pAsyncHandle,
118 const DWORD dwFlags)
120 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
121 FIXME("(%p):(%p,%p,%x): Stub\n", This, pvUserContext, pAsyncHandle, dwFlags);
122 return DPN_OK;
125 static HRESULT WINAPI IDirectPlay8ClientImpl_CancelAsyncOperation(IDirectPlay8Client *iface,
126 const DPNHANDLE hAsyncHandle, const DWORD dwFlags)
128 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
129 FIXME("(%p):(%u,%x): Stub\n", This, hAsyncHandle, dwFlags);
130 return DPN_OK;
133 static HRESULT WINAPI IDirectPlay8ClientImpl_Connect(IDirectPlay8Client *iface,
134 const DPN_APPLICATION_DESC * const pdnAppDesc, IDirectPlay8Address * const pHostAddr,
135 IDirectPlay8Address * const pDeviceInfo, const DPN_SECURITY_DESC * const pdnSecurity,
136 const DPN_SECURITY_CREDENTIALS * const pdnCredentials, const void * const pvUserConnectData,
137 const DWORD dwUserConnectDataSize, void * const pvAsyncContext,
138 DPNHANDLE * const phAsyncHandle, const DWORD dwFlags)
140 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
141 FIXME("(%p):(%p,%p,%x): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags);
142 return DPN_OK;
145 static HRESULT WINAPI IDirectPlay8ClientImpl_Send(IDirectPlay8Client *iface,
146 const DPN_BUFFER_DESC * const prgBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut,
147 void * const pvAsyncContext, DPNHANDLE * const phAsyncHandle, const DWORD dwFlags)
149 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
150 FIXME("(%p):(%p,%p,%x): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags);
151 return DPN_OK;
154 static HRESULT WINAPI IDirectPlay8ClientImpl_GetSendQueueInfo(IDirectPlay8Client *iface,
155 DWORD * const pdwNumMsgs, DWORD * const pdwNumBytes, const DWORD dwFlags)
157 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
158 FIXME("(%p):(%x): Stub\n", This, dwFlags);
159 return DPN_OK;
162 static HRESULT WINAPI IDirectPlay8ClientImpl_GetApplicationDesc(IDirectPlay8Client *iface,
163 DPN_APPLICATION_DESC * const pAppDescBuffer, DWORD * const pcbDataSize, const DWORD dwFlags)
165 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
166 FIXME("(%p):(%x): Stub\n", This, dwFlags);
167 return DPN_OK;
170 static HRESULT WINAPI IDirectPlay8ClientImpl_SetClientInfo(IDirectPlay8Client *iface,
171 const DPN_PLAYER_INFO * const pdpnPlayerInfo, void * const pvAsyncContext,
172 DPNHANDLE * const phAsyncHandle, const DWORD dwFlags)
174 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
175 FIXME("(%p):(%p,%p,%x): Stub\n", This, pvAsyncContext, phAsyncHandle, dwFlags);
176 return DPN_OK;
179 static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerInfo(IDirectPlay8Client *iface,
180 DPN_PLAYER_INFO * const pdpnPlayerInfo, DWORD * const pdwSize, const DWORD dwFlags)
182 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
183 FIXME("(%p):(%x): Stub\n", This, dwFlags);
184 return DPN_OK;
187 static HRESULT WINAPI IDirectPlay8ClientImpl_GetServerAddress(IDirectPlay8Client *iface,
188 IDirectPlay8Address ** const pAddress, const DWORD dwFlags)
190 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
191 FIXME("(%p):(%x): Stub\n", This, dwFlags);
192 return DPN_OK;
195 static HRESULT WINAPI IDirectPlay8ClientImpl_Close(IDirectPlay8Client *iface, const DWORD dwFlags)
197 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
198 FIXME("(%p):(%x): Stub\n", This, dwFlags);
199 return DPN_OK;
202 static HRESULT WINAPI IDirectPlay8ClientImpl_ReturnBuffer(IDirectPlay8Client *iface,
203 const DPNHANDLE hBufferHandle, const DWORD dwFlags)
205 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
206 FIXME("(%p):(%x): Stub\n", This, dwFlags);
207 return DPN_OK;
210 static HRESULT WINAPI IDirectPlay8ClientImpl_GetCaps(IDirectPlay8Client *iface,
211 DPN_CAPS * const pdpCaps, const DWORD dwFlags)
213 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
214 FIXME("(%p):(%x): Stub\n", This, dwFlags);
215 return DPN_OK;
218 static HRESULT WINAPI IDirectPlay8ClientImpl_SetCaps(IDirectPlay8Client *iface,
219 const DPN_CAPS * const pdpCaps, const DWORD dwFlags)
221 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
222 FIXME("(%p):(%x): Stub\n", This, dwFlags);
223 return DPN_OK;
226 static HRESULT WINAPI IDirectPlay8ClientImpl_SetSPCaps(IDirectPlay8Client *iface,
227 const GUID * const pguidSP, const DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags)
229 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
230 FIXME("(%p):(%x): Stub\n", This, dwFlags);
231 return DPN_OK;
234 static HRESULT WINAPI IDirectPlay8ClientImpl_GetSPCaps(IDirectPlay8Client *iface,
235 const GUID * const pguidSP, DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags)
237 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
239 TRACE("(%p)->(%p,%p,%x)\n", This, pguidSP, pdpspCaps, dwFlags);
241 if(!This->msghandler)
242 return DPNERR_UNINITIALIZED;
244 if(pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
246 return DPNERR_INVALIDPARAM;
249 *pdpspCaps = This->spcaps;
251 return DPN_OK;
254 static HRESULT WINAPI IDirectPlay8ClientImpl_GetConnectionInfo(IDirectPlay8Client *iface,
255 DPN_CONNECTION_INFO * const pdpConnectionInfo, const DWORD dwFlags)
257 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
258 FIXME("(%p):(%x): Stub\n", This, dwFlags);
259 return DPN_OK;
262 static HRESULT WINAPI IDirectPlay8ClientImpl_RegisterLobby(IDirectPlay8Client *iface,
263 const DPNHANDLE dpnHandle,
264 struct IDirectPlay8LobbiedApplication * const pIDP8LobbiedApplication, const DWORD dwFlags)
266 IDirectPlay8ClientImpl *This = impl_from_IDirectPlay8Client(iface);
267 FIXME("(%p):(%x): Stub\n", This, dwFlags);
268 return DPN_OK;
271 static const IDirectPlay8ClientVtbl DirectPlay8Client_Vtbl =
273 IDirectPlay8ClientImpl_QueryInterface,
274 IDirectPlay8ClientImpl_AddRef,
275 IDirectPlay8ClientImpl_Release,
276 IDirectPlay8ClientImpl_Initialize,
277 IDirectPlay8ClientImpl_EnumServiceProviders,
278 IDirectPlay8ClientImpl_EnumHosts,
279 IDirectPlay8ClientImpl_CancelAsyncOperation,
280 IDirectPlay8ClientImpl_Connect,
281 IDirectPlay8ClientImpl_Send,
282 IDirectPlay8ClientImpl_GetSendQueueInfo,
283 IDirectPlay8ClientImpl_GetApplicationDesc,
284 IDirectPlay8ClientImpl_SetClientInfo,
285 IDirectPlay8ClientImpl_GetServerInfo,
286 IDirectPlay8ClientImpl_GetServerAddress,
287 IDirectPlay8ClientImpl_Close,
288 IDirectPlay8ClientImpl_ReturnBuffer,
289 IDirectPlay8ClientImpl_GetCaps,
290 IDirectPlay8ClientImpl_SetCaps,
291 IDirectPlay8ClientImpl_SetSPCaps,
292 IDirectPlay8ClientImpl_GetSPCaps,
293 IDirectPlay8ClientImpl_GetConnectionInfo,
294 IDirectPlay8ClientImpl_RegisterLobby
297 HRESULT DPNET_CreateDirectPlay8Client(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppv)
299 IDirectPlay8ClientImpl* client;
300 HRESULT hr;
302 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
304 *ppv = NULL;
306 if(pUnkOuter)
307 return CLASS_E_NOAGGREGATION;
309 client = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlay8ClientImpl));
310 if (!client)
311 return E_OUTOFMEMORY;
313 client->IDirectPlay8Client_iface.lpVtbl = &DirectPlay8Client_Vtbl;
314 client->ref = 1;
316 init_dpn_sp_caps(&client->spcaps);
318 hr = IDirectPlay8ClientImpl_QueryInterface(&client->IDirectPlay8Client_iface, riid, ppv);
319 IDirectPlay8ClientImpl_Release(&client->IDirectPlay8Client_iface);
321 return hr;