ReactOS 0.4.17-dev-934-g091855f
lobbiedapp.c
Go to the documentation of this file.
1/*
2 * DirectPlay8 LobbiedApplication
3 *
4 * Copyright 2007 Jason Edmeades
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
22
23#include <stdarg.h>
24
25#define COBJMACROS
26#include "windef.h"
27#include "winbase.h"
28#include "wingdi.h"
29#include "winuser.h"
30#include "objbase.h"
31#include "wine/debug.h"
32
33#include "dpnet_private.h"
34
36
37static inline IDirectPlay8LobbiedApplicationImpl *impl_from_IDirectPlay8LobbiedApplication(IDirectPlay8LobbiedApplication *iface)
38{
40 IDirectPlay8LobbiedApplication_iface);
41}
42
43/* IDirectPlay8LobbiedApplication IUnknown parts follow: */
44static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_QueryInterface(IDirectPlay8LobbiedApplication *iface,
45 REFIID riid, void **ret_iface)
46{
47 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlay8LobbiedApplication)) {
49 *ret_iface = iface;
50 return S_OK;
51 }
52
53 WARN("(%p)->(%s,%p): not found\n", iface, debugstr_guid(riid), ret_iface);
54 return E_NOINTERFACE;
55}
56
57static ULONG WINAPI IDirectPlay8LobbiedApplicationImpl_AddRef(IDirectPlay8LobbiedApplication *iface)
58{
60 ULONG refCount = InterlockedIncrement(&This->ref);
61
62 TRACE("(%p)->(ref before=%lu)\n", This, refCount - 1);
63
64 return refCount;
65}
66
67static ULONG WINAPI IDirectPlay8LobbiedApplicationImpl_Release(IDirectPlay8LobbiedApplication *iface)
68{
70 ULONG refCount = InterlockedDecrement(&This->ref);
71
72 TRACE("(%p)->(ref before=%lu)\n", This, refCount + 1);
73
74 if (!refCount) {
76 }
77 return refCount;
78}
79
80/* IDirectPlay8LobbiedApplication Interface follow: */
81
82static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_Initialize(IDirectPlay8LobbiedApplication *iface,
83 void * const pvUserContext, const PFNDPNMESSAGEHANDLER pfn,
84 DPNHANDLE * const pdpnhConnection, const DWORD dwFlags)
85{
87
88 TRACE("(%p)->(%p %p %p %lx)\n", This, pvUserContext, pfn, pdpnhConnection, dwFlags);
89
90 if(!pfn)
92
93 This->msghandler = pfn;
94 This->flags = dwFlags;
95 This->usercontext = pvUserContext;
96 This->connection = pdpnhConnection;
97
99
100 return DPN_OK;
101}
102
103static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_RegisterProgram(IDirectPlay8LobbiedApplication *iface,
104 PDPL_PROGRAM_DESC pdplProgramDesc, const DWORD dwFlags)
105{
107 FIXME("(%p): stub\n", This);
108 return DPN_OK;
109}
110
111static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_UnRegisterProgram(IDirectPlay8LobbiedApplication *iface,
112 GUID *pguidApplication, const DWORD dwFlags)
113{
115 FIXME("(%p): stub\n", This);
116 return DPN_OK;
117}
118
119static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_Send(IDirectPlay8LobbiedApplication *iface,
120 const DPNHANDLE hConnection, BYTE * const pBuffer, const DWORD pBufferSize,
121 const DWORD dwFlags)
122{
124 FIXME("(%p): stub\n", This);
125 return DPN_OK;
126}
127
128static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_SetAppAvailable(IDirectPlay8LobbiedApplication *iface,
129 const BOOL fAvailable, const DWORD dwFlags)
130{
132 FIXME("(%p): stub\n", This);
133 return DPN_OK;
134}
135
136static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_UpdateStatus(IDirectPlay8LobbiedApplication *iface,
137 const DPNHANDLE hConnection, const DWORD dwStatus, const DWORD dwFlags)
138{
140 FIXME("(%p): stub\n", This);
141 return DPN_OK;
142}
143
144static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_Close(IDirectPlay8LobbiedApplication *iface,
145 const DWORD dwFlags)
146{
148 FIXME("(%p): stub\n", This);
149 return DPN_OK;
150}
151
153 const DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS * const pdplSessionInfo,
154 DWORD *pdwInfoSize, const DWORD dwFlags)
155{
157 FIXME("(%p): stub\n", This);
158 return DPN_OK;
159}
160
162 const DPNHANDLE hConnection, const DPL_CONNECTION_SETTINGS * const pdplSessionInfo,
163 const DWORD dwFlags)
164{
166 FIXME("(%p): stub\n", This);
167 return DPN_OK;
168}
169
170static const IDirectPlay8LobbiedApplicationVtbl DirectPlay8LobbiedApplication_Vtbl =
171{
184};
185
186
187
188HRESULT DPNET_CreateDirectPlay8LobbiedApp(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj) {
190
191 TRACE("(%p, %s, %p)\n", punkOuter, debugstr_guid(riid), ppobj);
192
194 if (NULL == app) {
195 *ppobj = NULL;
196 return E_OUTOFMEMORY;
197 }
199 app->ref = 0;
201 riid, ppobj);
202}
#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
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static LPVOID LPUNKNOWN
Definition: dinput.c:53
#define NULL
Definition: types.h:112
#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
HRESULT(WINAPI * PFNDPNMESSAGEHANDLER)(PVOID, DWORD, PVOID)
Definition: dplay8.h:30
#define DPN_OK
Definition: dplay8.h:75
#define DPNERR_INVALIDPOINTER
Definition: dplay8.h:81
DWORD DPNHANDLE
Definition: dplay8.h:32
#define IDirectPlay8LobbiedApplication_AddRef(p)
Definition: dplobby8.h:169
void init_winsock(void)
Definition: dpnet_main.c:55
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
_Must_inspect_result_ _In_ ULONG _Out_writes_bytes_ pBufferSize PVOID _Inout_ PULONG pBufferSize
Definition: fsrtlfuncs.h:1165
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define debugstr_guid
Definition: kernel32.h:35
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_QueryInterface(IDirectPlay8LobbiedApplication *iface, REFIID riid, void **ret_iface)
Definition: lobbiedapp.c:44
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_GetConnectionSettings(IDirectPlay8LobbiedApplication *iface, const DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS *const pdplSessionInfo, DWORD *pdwInfoSize, const DWORD dwFlags)
Definition: lobbiedapp.c:152
static ULONG WINAPI IDirectPlay8LobbiedApplicationImpl_Release(IDirectPlay8LobbiedApplication *iface)
Definition: lobbiedapp.c:67
static ULONG WINAPI IDirectPlay8LobbiedApplicationImpl_AddRef(IDirectPlay8LobbiedApplication *iface)
Definition: lobbiedapp.c:57
static IDirectPlay8LobbiedApplicationImpl * impl_from_IDirectPlay8LobbiedApplication(IDirectPlay8LobbiedApplication *iface)
Definition: lobbiedapp.c:37
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_RegisterProgram(IDirectPlay8LobbiedApplication *iface, PDPL_PROGRAM_DESC pdplProgramDesc, const DWORD dwFlags)
Definition: lobbiedapp.c:103
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_UnRegisterProgram(IDirectPlay8LobbiedApplication *iface, GUID *pguidApplication, const DWORD dwFlags)
Definition: lobbiedapp.c:111
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_UpdateStatus(IDirectPlay8LobbiedApplication *iface, const DPNHANDLE hConnection, const DWORD dwStatus, const DWORD dwFlags)
Definition: lobbiedapp.c:136
HRESULT DPNET_CreateDirectPlay8LobbiedApp(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj)
Definition: lobbiedapp.c:188
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_SetAppAvailable(IDirectPlay8LobbiedApplication *iface, const BOOL fAvailable, const DWORD dwFlags)
Definition: lobbiedapp.c:128
static const IDirectPlay8LobbiedApplicationVtbl DirectPlay8LobbiedApplication_Vtbl
Definition: lobbiedapp.c:170
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_Send(IDirectPlay8LobbiedApplication *iface, const DPNHANDLE hConnection, BYTE *const pBuffer, const DWORD pBufferSize, const DWORD dwFlags)
Definition: lobbiedapp.c:119
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_SetConnectionSettings(IDirectPlay8LobbiedApplication *iface, const DPNHANDLE hConnection, const DPL_CONNECTION_SETTINGS *const pdplSessionInfo, const DWORD dwFlags)
Definition: lobbiedapp.c:161
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_Initialize(IDirectPlay8LobbiedApplication *iface, void *const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, DPNHANDLE *const pdpnhConnection, const DWORD dwFlags)
Definition: lobbiedapp.c:82
static HRESULT WINAPI IDirectPlay8LobbiedApplicationImpl_Close(IDirectPlay8LobbiedApplication *iface, const DWORD dwFlags)
Definition: lobbiedapp.c:144
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
DWORD dwStatus
Definition: mediaobj.idl:95
PVOID pBuffer
#define TRACE(s)
Definition: solgame.cpp:4
IDirectPlay8LobbiedApplication IDirectPlay8LobbiedApplication_iface
#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
unsigned char BYTE
Definition: xxhash.c:193