ReactOS  0.4.14-dev-323-g6fe6a88
dplay_global.h
Go to the documentation of this file.
1 /*
2  * Copyright 2000 Peter Hunnisett
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #ifndef __WINE_DPLAY_GLOBAL_INCLUDED
20 #define __WINE_DPLAY_GLOBAL_INCLUDED
21 
22 #include <stdarg.h>
23 
24 #include "windef.h"
25 #include "winbase.h"
26 #include "wine/dplaysp.h"
27 #include "lobbysp.h"
28 #include "dplayx_queue.h"
29 
30 extern HRESULT DPL_EnumAddress( LPDPENUMADDRESSCALLBACK lpEnumAddressCallback,
31  LPCVOID lpAddress, DWORD dwAddressSize,
32  LPVOID lpContext ) DECLSPEC_HIDDEN;
33 
35 {
42 
43 typedef struct tagDP_MSG_REPLY_STRUCT
44 {
49  /* FIXME: Is the message header required as well? */
51 
53 {
54  DPQ_ENTRY(tagDP_MSG_REPLY_STRUCT_LIST) repliesExpected;
57 
58 struct PlayerData
59 {
60  /* Individual player information */
62 
65 
66  ULONG uRef; /* What is the reference count on this data? */
67 
68  /* View of local data */
71 
72  /* View of remote data */
75 
76  /* SP data on a per player basis */
78 
79  DWORD dwFlags; /* Special remarks about the type of player */
80 };
81 typedef struct PlayerData* lpPlayerData;
82 
83 struct PlayerList
84 {
85  DPQ_ENTRY(PlayerList) players;
86 
88 };
89 typedef struct PlayerList* lpPlayerList;
90 
91 struct GroupData
92 {
93  /* Internal information */
94  DPID parent; /* If parent == 0 it's a top level group */
95 
96  ULONG uRef; /* Reference count */
97 
98  DPQ_HEAD(GroupList) groups; /* A group has [0..n] groups */
99  DPQ_HEAD(PlayerList) players; /* A group has [0..n] players */
100 
101  DPID idGroupOwner; /* ID of player who owns the group */
102 
103  DWORD dwFlags; /* Flags describing anything special about the group */
104 
107 
108  /* View of local data */
111 
112  /* View of remote data */
115 };
116 typedef struct GroupData GroupData;
117 typedef struct GroupData* lpGroupData;
118 
119 struct GroupList
120 {
122 
124 };
125 typedef struct GroupList* lpGroupList;
126 
127 struct DPMSG
128 {
129  DPQ_ENTRY( DPMSG ) msgs;
131 };
132 typedef struct DPMSG* LPDPMSG;
133 
135 {
139 };
140 
141 /* Contains all data members. FIXME: Rename me */
142 typedef struct tagDirectPlay2Data
143 {
145 
146  /* For async EnumSessions requests */
150 
151  LPVOID lpNameServerData; /* DPlay interface doesn't know contents */
152 
153  BOOL bHostInterface; /* Did this interface create the session */
154 
155  lpGroupData lpSysGroup; /* System group with _everything_ in it */
156 
158 
159  /* I/O Msg queues */
160  DPQ_HEAD( DPMSG ) receiveMsgs; /* Msg receive queue */
161  DPQ_HEAD( DPMSG ) sendMsgs; /* Msg send pending queue */
162 
163  /* Information about the service provider active on this connection */
166 
167  /* Information about the lobby server that's attached to this DP object */
170 
171  /* Our service provider */
173 
174  /* Our DP lobby provider */
176 
178 
179  /* Expected messages queue */
180  DPQ_HEAD( tagDP_MSG_REPLY_STRUCT_LIST ) repliesExpected;
182 
183 typedef struct IDirectPlayImpl
184 {
185  IDirectPlay IDirectPlay_iface;
187  IDirectPlay2 IDirectPlay2_iface;
189  IDirectPlay3 IDirectPlay3_iface;
191  IDirectPlay4 IDirectPlay4_iface;
192  LONG numIfaces; /* "in use interfaces" refcount */
197 
198 HRESULT DP_HandleMessage( IDirectPlayImpl *This, const void *lpMessageBody,
199  DWORD dwMessageBodySize, const void *lpMessageHeader, WORD wCommandId, WORD wVersion,
200  void **lplpReply, DWORD *lpdwMsgSize ) DECLSPEC_HIDDEN;
201 
202 /* DP SP external interfaces into DirectPlay */
203 extern HRESULT DP_GetSPPlayerData( IDirectPlayImpl *lpDP, DPID idPlayer, void **lplpData ) DECLSPEC_HIDDEN;
204 extern HRESULT DP_SetSPPlayerData( IDirectPlayImpl *lpDP, DPID idPlayer, void *lpData ) DECLSPEC_HIDDEN;
205 
206 /* DP external interfaces to call into DPSP interface */
208 
213 
214 #endif /* __WINE_DPLAY_GLOBAL_INCLUDED */
DPQ_HEAD(GroupList) groups
DPQ_ENTRY(GroupList) groups
#define REFIID
Definition: guiddef.h:118
LPVOID DPSP_CreateSPPlayerData(void) DECLSPEC_HIDDEN
Definition: dplaysp.c:711
HMODULE hDPLobbyProvider
Definition: dplay_global.h:175
DPQ_HEAD(DPMSG) receiveMsgs
struct IDirectPlay2 IDirectPlay2A
Definition: dplay.h:47
REFIID riid
Definition: precomp.h:44
DWORD dwFlags
Definition: dplay_global.h:79
REFIID LPVOID * ppv
Definition: atlbase.h:39
struct GroupData * lpGroupData
Definition: dplay_global.h:117
HRESULT DP_SetSPPlayerData(IDirectPlayImpl *lpDP, DPID idPlayer, void *lpData) DECLSPEC_HIDDEN
Definition: dplay.c:5732
IDirectPlay2A IDirectPlay2A_iface
Definition: dplay_global.h:186
ULONG uRef
Definition: dplay_global.h:66
lpGroupData lpGData
Definition: dplay_global.h:123
CRITICAL_SECTION lock
Definition: dplay_global.h:194
DPQ_ENTRY(tagDP_MSG_REPLY_STRUCT_LIST) repliesExpected
lpPlayerData lpPData
Definition: dplay_global.h:87
LPVOID lpSPPlayerData
Definition: dplay_global.h:77
IDirectPlay4A IDirectPlay4A_iface
Definition: dplay_global.h:190
HRESULT DP_GetSPPlayerData(IDirectPlayImpl *lpDP, DPID idPlayer, void **lplpData) DECLSPEC_HIDDEN
Definition: dplay.c:5718
DP_MSG_REPLY_STRUCT replyExpected
Definition: dplay_global.h:55
LPVOID lpRemoteData
Definition: dplay_global.h:73
LPVOID lpLocalData
Definition: dplay_global.h:109
lpGroupData lpSysGroup
Definition: dplay_global.h:155
LPVOID lpLocalData
Definition: dplay_global.h:69
GLsizei GLuint * groups
Definition: glext.h:11113
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
HRESULT dplobbysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp) DECLSPEC_HIDDEN
Definition: lobbysp.c:230
struct tagDP_MSG_REPLY_STRUCT_LIST DP_MSG_REPLY_STRUCT_LIST
HRESULT DP_HandleMessage(IDirectPlayImpl *This, const void *lpMessageBody, DWORD dwMessageBodySize, const void *lpMessageHeader, WORD wCommandId, WORD wVersion, void **lplpReply, DWORD *lpdwMsgSize) DECLSPEC_HIDDEN
Definition: dplay.c:270
DWORD dwFlags
Definition: dplay_global.h:103
struct IDirectPlay4 IDirectPlay4A
Definition: dplay.h:59
IDirectPlay4 IDirectPlay4_iface
Definition: dplay_global.h:191
IDirectPlay IDirectPlay_iface
Definition: dplay_global.h:185
struct tagDP_MSG_REPLY_STRUCT DP_MSG_REPLY_STRUCT
DPID idGroupOwner
Definition: dplay_global.h:101
DWORD dwRemoteDataSize
Definition: dplay_global.h:74
DWORD dwLocalDataSize
Definition: dplay_global.h:70
LPDPSESSIONDESC2 lpSessionDesc
Definition: dplay_global.h:157
IDirectPlay2 IDirectPlay2_iface
Definition: dplay_global.h:187
struct tagDP_MSG_REPLY_STRUCT_LIST * LPDP_MSG_REPLY_STRUCT_LIST
LONG HRESULT
Definition: typedefs.h:77
struct PlayerData * lpPlayerData
Definition: dplay_global.h:81
ULONG uRef
Definition: dplay_global.h:96
DPMSG_GENERIC * msg
Definition: dplay_global.h:130
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD DPID
Definition: dplay.h:158
struct tagDirectPlay2Data DirectPlay2Data
HRESULT dplobby_create(REFIID riid, void **ppv) DECLSPEC_HIDDEN
Definition: dplobby.c:2026
SPSTATE
Definition: dplay_global.h:134
DPID parent
Definition: dplay_global.h:94
HRESULT dplay_create(REFIID riid, void **ppv) DECLSPEC_HIDDEN
Definition: dplay.c:5677
SPDATA_INIT dplspData
Definition: dplay_global.h:168
struct GroupList * lpGroupList
Definition: dplay_global.h:125
HRESULT DPL_EnumAddress(LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext) DECLSPEC_HIDDEN
Definition: dplobby.c:644
DPQ_ENTRY(DPMSG) msgs
HANDLE hKillEnumSessionThreadEvent
Definition: dplay_global.h:148
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
enum SPSTATE connectionInitialized
Definition: dplay_global.h:177
IDirectPlay3A IDirectPlay3A_iface
Definition: dplay_global.h:188
DPNAME name
Definition: dplay_global.h:106
CONST void * LPCVOID
Definition: windef.h:191
struct DPMSG * LPDPMSG
Definition: dplay_global.h:132
struct IDirectPlayImpl IDirectPlayImpl
DWORD dwLocalDataSize
Definition: dplay_global.h:110
unsigned int ULONG
Definition: retypes.h:1
struct IDirectPlay3 IDirectPlay3A
Definition: dplay.h:53
DPQ_ENTRY(PlayerList) players
BOOL(CALLBACK * LPDPENUMADDRESSCALLBACK)(REFGUID guidDataType, DWORD dwDataSize, LPCVOID lpData, LPVOID lpContext)
Definition: dplobby.h:352
IDirectPlay3 IDirectPlay3_iface
Definition: dplay_global.h:189
HMODULE hServiceProvider
Definition: dplay_global.h:172
struct tagDP_MSG_REPLY_STRUCT * LPDP_MSG_REPLY_STRUCT
LPVOID lpRemoteData
Definition: dplay_global.h:113
HRESULT dplaysp_create(REFIID riid, void **ppv, IDirectPlayImpl *dp) DECLSPEC_HIDDEN
Definition: dplaysp.c:686
DPNAME name
Definition: dplay_global.h:63
DirectPlay2Data * dp2
Definition: dplay_global.h:195
struct tagEnumSessionAsyncCallbackData EnumSessionAsyncCallbackData
HANDLE hEvent
Definition: dplay_global.h:64
DWORD dwRemoteDataSize
Definition: dplay_global.h:114
struct PlayerList * lpPlayerList
Definition: dplay_global.h:89