source: trunk/src/DPlayX/dplaysp.h@ 5280

Last change on this file since 5280 was 4317, checked in by hugh, 25 years ago

Added ID tags

File size: 12.3 KB
Line 
1// $Id: dplaysp.h,v 1.2 2000-09-24 22:47:39 hugh Exp $
2#ifndef __WINE_DIRECT_PLAY_SP_H
3#define __WINE_DIRECT_PLAY_SP_H
4
5#include "dplay.h"
6#include "dplobby.h"
7
8/* GUID for IDirectPlaySP {0C9F6360-CC61-11cf-ACEC-00AA006886E3} */
9DEFINE_GUID(IID_IDirectPlaySP, 0xc9f6360, 0xcc61, 0x11cf, 0xac, 0xec, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
10typedef struct IDirectPlaySP IDirectPlaySP, *LPDIRECTPLAYSP;
11
12
13typedef BOOL (CALLBACK* LPENUMMRUCALLBACK)( LPCVOID lpData,
14 DWORD dwDataSize,
15 LPVOID lpContext );
16
17/* For SP. Top 16 bits is dplay, bottom 16 is SP */
18#define DPSP_MAJORVERSION 0x00060000
19#define DPSP_DX5VERSION 0x00050000
20#define DPSP_DX3VERSION 0x00040000
21
22#define DPSP_MAJORVERSIONMASK 0xFFFF0000
23#define DPSP_MINORVERSIONMASK 0x0000FFFF
24
25
26/* Some flags */
27#define DPLAYI_PLAYER_SYSPLAYER 0x00000001
28#define DPLAYI_PLAYER_NAMESRVR 0x00000002
29#define DPLAYI_PLAYER_PLAYERINGROUP 0x00000004
30#define DPLAYI_PLAYER_PLAYERLOCAL 0x00000008
31#define DPLAYI_GROUP_SYSGROUP 0x00000020
32#define DPLAYI_GROUP_DPLAYOWNS 0x00000040
33#define DPLAYI_PLAYER_APPSERVER 0x00000080
34#define DPLAYI_GROUP_HIDDEN 0x00000400
35
36/* Define the COM interface */
37#define ICOM_INTERFACE IDirectPlaySP
38#define IDirectPlaySP_METHODS \
39 ICOM_METHOD5(HRESULT,AddMRUEntry, LPCWSTR,lpSection, LPCWSTR,lpKey, LPCVOID,lpData, DWORD,dwDataSize, DWORD,dwMaxEntries ) \
40 ICOM_METHOD6(HRESULT,CreateAddress, REFGUID,guidSP, REFGUID,guidDataType, LPCVOID,lpData, DWORD,dwDataSize, LPVOID,lpAddress,LPDWORD,lpdwAddressSize) \
41 ICOM_METHOD4(HRESULT,EnumAddress, LPDPENUMADDRESSCALLBACK,lpEnumAddressCallback, LPCVOID,lpAddress, DWORD,dwAddressSize, LPVOID,lpContext ) \
42 ICOM_METHOD4(HRESULT,EnumMRUEntries, LPCWSTR,lpSection, LPCWSTR,lpKey, LPENUMMRUCALLBACK,lpEnumMRUCallback, LPVOID,lpContext ) \
43 ICOM_METHOD2(HRESULT,GetPlayerFlags, DPID,idPlayer, LPDWORD,lpdwPlayerFlags ) \
44 ICOM_METHOD4(HRESULT,GetSPPlayerData, DPID,idPlayer, LPVOID*,lplpData, LPDWORD,lpdwDataSize, DWORD,dwFlags ) \
45 ICOM_METHOD3(HRESULT,HandleMessage, LPVOID,lpMessageBody, DWORD,dwMessageBodySize, LPVOID,lpMessageHeader ) \
46 ICOM_METHOD4(HRESULT,SetSPPlayerData, DPID,idPlayer, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags ) \
47 ICOM_METHOD4(HRESULT,CreateCompoundAddress, LPCDPCOMPOUNDADDRESSELEMENT,lpElements, DWORD,dwElementCount, LPVOID,lpAddress, LPDWORD,lpdwAddressSize ) \
48 ICOM_METHOD3(HRESULT,GetSPData, LPVOID*,lplpData, LPDWORD,dwDataSize, DWORD,dwFlags ) \
49 ICOM_METHOD3(HRESULT,SetSPData, LPVOID,lpData, DWORD,dwDataSize, DWORD,dwFlags ) \
50 ICOM_METHOD2(VOID,SendComplete, LPVOID,arg1, DWORD,arg2 )
51
52#define IDirectPlaySP_IMETHODS \
53 IUnknown_IMETHODS \
54 IDirectPlaySP_METHODS
55
56ICOM_DEFINE(IDirectPlaySP,IUnknown)
57#undef ICOM_INTERFACE
58
59/*** IUnknown methods ***/
60#define IDirectPlaySP_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
61#define IDirectPlaySP_AddRef(p) ICOM_CALL (AddRef,p)
62#define IDirectPlaySP_Release(p) ICOM_CALL (Release,p)
63/*** IDirectPlaySP methods ***/
64#define IDirectPlaySP_AddMRUEntry ICOM_CALL5(AddMRUEntry,p,a,b,c,d,e)
65#define IDirectPlaySP_CreateAddress ICOM_CALL6(CreateAddress,p,a,b,c,d,e,f)
66#define IDirectPlaySP_EnumAddress ICOM_CALL4(EnumAddress,p,a,b,c,d)
67#define IDirectPlaySP_EnumMRUEntries ICOM_CALL4(EnumMRUEntries,p,a,b,c,d)
68#define IDirectPlaySP_GetPlayerFlags ICOM_CALL2(GetPlayerFlags,p,a,b)
69#define IDirectPlaySP_GetSPPlayerData ICOM_CALL4(GetSPPlayerData,p,a,b,c,d)
70#define IDirectPlaySP_HandleMessage ICOM_CALL3(HandleMessage,p,a,b,c)
71#define IDirectPlaySP_SetSPPlayerData ICOM_CALL4(SetSPPlayerData,p,a,b,c,d)
72#define IDirectPlaySP_CreateCompoundAddress ICOM_CALL4(CreateCompoundAddress,p,a,b,c,d)
73#define IDirectPlaySP_GetSPData ICOM_CALL3(GetSPData,p,a,b,c)
74#define IDirectPlaySP_SetSPData ICOM_CALL3(SetSPData,p,a,b,c)
75#define IDirectPlaySP_SendComplete ICOM_CALL2(SendComplete,p,a,b)
76
77/* SP Callback stuff */
78
79typedef struct tagDPSP_ADDPLAYERTOGROUPDATA
80{
81 DPID idPlayer;
82 DPID idGroup;
83 IDirectPlaySP* lpISP;
84} DPSP_ADDPLAYERTOGROUPDATA, *LPDPSP_ADDPLAYERTOGROUPDATA;
85
86typedef struct tagDPSP_CLOSEDATA
87{
88 IDirectPlaySP* lpISP;
89} DPSP_CLOSEDATA, *LPDPSP_CLOSEDATA;
90
91typedef struct tagDPSP_CREATEGROUPDATA
92{
93 DPID idGroup;
94 DWORD dwFlags;
95 LPVOID lpSPMessageHeader;
96 IDirectPlaySP* lpISP;
97} DPSP_CREATEGROUPDATA, *LPDPSP_CREATEGROUPDATA;
98
99typedef struct tagDPSP_CREATEPLAYERDATA
100{
101 DPID idPlayer;
102 DWORD dwFlags;
103 LPVOID lpSPMessageHeader;
104 IDirectPlaySP* lpISP;
105} DPSP_CREATEPLAYERDATA, *LPDPSP_CREATEPLAYERDATA;
106
107typedef struct tagDPSP_DELETEGROUPDATA
108{
109 DPID idGroup;
110 DWORD dwFlags;
111 IDirectPlaySP* lpISP;
112} DPSP_DELETEGROUPDATA, *LPDPSP_DELETEGROUPDATA;
113
114typedef struct tagDPSP_DELETEPLAYERDATA
115{
116 DPID idPlayer;
117 DWORD dwFlags;
118 IDirectPlaySP* lpISP;
119} DPSP_DELETEPLAYERDATA, *LPDPSP_DELETEPLAYERDATA;
120
121typedef struct tagDPSP_ENUMSESSIONSDATA
122{
123 LPVOID lpMessage;
124 DWORD dwMessageSize;
125 IDirectPlaySP* lpISP;
126 BOOL bReturnStatus;
127} DPSP_ENUMSESSIONSDATA, *LPDPSP_ENUMSESSIONSDATA;
128
129typedef struct _DPSP_GETADDRESSDATA
130{
131 DPID idPlayer;
132 DWORD dwFlags;
133 LPDPADDRESS lpAddress;
134 LPDWORD lpdwAddressSize;
135 IDirectPlaySP* lpISP;
136} DPSP_GETADDRESSDATA, *LPDPSP_GETADDRESSDATA;
137
138typedef struct tagDPSP_GETADDRESSCHOICESDATA
139{
140 LPDPADDRESS lpAddress;
141 LPDWORD lpdwAddressSize;
142 IDirectPlaySP* lpISP;
143} DPSP_GETADDRESSCHOICESDATA, *LPDPSP_GETADDRESSCHOICESDATA;
144
145typedef struct tagDPSP_GETCAPSDATA
146{
147 DPID idPlayer;
148 LPDPCAPS lpCaps;
149 DWORD dwFlags;
150 IDirectPlaySP* lpISP;
151} DPSP_GETCAPSDATA, *LPDPSP_GETCAPSDATA;
152
153typedef struct tagDPSP_OPENDATA
154{
155 BOOL bCreate;
156 LPVOID lpSPMessageHeader;
157 IDirectPlaySP* lpISP;
158 BOOL bReturnStatus;
159 DWORD dwOpenFlags;
160 DWORD dwSessionFlags;
161} DPSP_OPENDATA, *LPDPSP_OPENDATA;
162
163typedef struct tagDPSP_REMOVEPLAYERFROMGROUPDATA
164{
165 DPID idPlayer;
166 DPID idGroup;
167 IDirectPlaySP* lpISP;
168} DPSP_REMOVEPLAYERFROMGROUPDATA, *LPDPSP_REMOVEPLAYERFROMGROUPDATA;
169
170typedef struct tagDPSP_REPLYDATA
171{
172 LPVOID lpSPMessageHeader;
173 LPVOID lpMessage;
174 DWORD dwMessageSize;
175 DPID idNameServer;
176 IDirectPlaySP* lpISP;
177} DPSP_REPLYDATA, *LPDPSP_REPLYDATA;
178
179typedef struct tagDPSP_SENDDATA
180{
181 DWORD dwFlags;
182 DPID idPlayerTo;
183 DPID idPlayerFrom;
184 LPVOID lpMessage;
185 DWORD dwMessageSize;
186 BOOL bSystemMessage;
187 IDirectPlaySP* lpISP;
188} DPSP_SENDDATA, *LPDPSP_SENDDATA;
189
190typedef struct tagDPSP_SENDTOGROUPDATA
191{
192 DWORD dwFlags;
193 DPID idGroupTo;
194 DPID idPlayerFrom;
195 LPVOID lpMessage;
196 DWORD dwMessageSize;
197 IDirectPlaySP* lpISP;
198} DPSP_SENDTOGROUPDATA, *LPDPSP_SENDTOGROUPDATA;
199
200typedef struct tagDPSP_SENDEXDATA
201{
202 IDirectPlaySP* lpISP;
203 DWORD dwFlags;
204 DPID idPlayerTo;
205 DPID idPlayerFrom;
206 LPSGBUFFER lpSendBuffers;
207 DWORD cBuffers;
208 DWORD dwMessageSize;
209 DWORD dwPriority;
210 DWORD dwTimeout;
211 LPVOID lpDPContext;
212 LPDWORD lpdwSPMsgID;
213 BOOL bSystemMessage;
214} DPSP_SENDEXDATA, *LPDPSP_SENDEXDATA;
215
216typedef struct tagDPSP_SENDTOGROUPEXDATA
217{
218 IDirectPlaySP* lpISP;
219 DWORD dwFlags;
220 DPID idGroupTo;
221 DPID idPlayerFrom;
222 LPSGBUFFER lpSendBuffers;
223 DWORD cBuffers;
224 DWORD dwMessageSize;
225 DWORD dwPriority;
226 DWORD dwTimeout;
227 LPVOID lpDPContext;
228 LPDWORD lpdwSPMsgID;
229} DPSP_SENDTOGROUPEXDATA, *LPDPSP_SENDTOGROUPEXDATA;
230
231typedef struct tagDPSP_GETMESSAGEQUEUEDATA
232{
233 IDirectPlaySP* lpISP;
234 DWORD dwFlags;
235 DPID idFrom;
236 DPID idTo;
237 LPDWORD lpdwNumMsgs;
238 LPDWORD lpdwNumBytes;
239} DPSP_GETMESSAGEQUEUEDATA, *LPDPSP_GETMESSAGEQUEUEDATA;
240
241#define DPCANCELSEND_PRIORITY 0x00000001
242#define DPCANCELSEND_ALL 0x00000002
243
244typedef struct tagDPSP_CANCELDATA
245{
246 IDirectPlaySP* lpISP;
247 DWORD dwFlags;
248 LPRGLPVOID lprglpvSPMsgID;
249 DWORD cSPMsgID;
250 DWORD dwMinPriority;
251 DWORD dwMaxPriority;
252} DPSP_CANCELDATA, *LPDPSP_CANCELDATA;
253
254typedef struct tagDPSP_SHUTDOWNDATA
255{
256 IDirectPlaySP* lpISP;
257} DPSP_SHUTDOWNDATA, *LPDPSP_SHUTDOWNDATA;
258
259
260/* Prototypes returned by SPInit */
261typedef HRESULT (WINAPI *LPDPSP_CREATEPLAYER)(LPDPSP_CREATEPLAYERDATA);
262typedef HRESULT (WINAPI *LPDPSP_DELETEPLAYER)(LPDPSP_DELETEPLAYERDATA);
263typedef HRESULT (WINAPI *LPDPSP_SEND)(LPDPSP_SENDDATA);
264typedef HRESULT (WINAPI *LPDPSP_ENUMSESSIONS)(LPDPSP_ENUMSESSIONSDATA);
265typedef HRESULT (WINAPI *LPDPSP_REPLY)(LPDPSP_REPLYDATA);
266typedef HRESULT (WINAPI *LPDPSP_SHUTDOWN)(void);
267typedef HRESULT (WINAPI *LPDPSP_CREATEGROUP)(LPDPSP_CREATEGROUPDATA);
268typedef HRESULT (WINAPI *LPDPSP_DELETEGROUP)(LPDPSP_DELETEGROUPDATA);
269typedef HRESULT (WINAPI *LPDPSP_ADDPLAYERTOGROUP)(LPDPSP_ADDPLAYERTOGROUPDATA);
270typedef HRESULT (WINAPI *LPDPSP_REMOVEPLAYERFROMGROUP)(LPDPSP_REMOVEPLAYERFROMGROUPDATA);
271typedef HRESULT (WINAPI *LPDPSP_GETCAPS)(LPDPSP_GETCAPSDATA);
272typedef HRESULT (WINAPI *LPDPSP_GETADDRESS)(LPDPSP_GETADDRESSDATA);
273typedef HRESULT (WINAPI *LPDPSP_GETADDRESSCHOICES)(LPDPSP_GETADDRESSCHOICESDATA);
274typedef HRESULT (WINAPI *LPDPSP_OPEN)(LPDPSP_OPENDATA);
275typedef HRESULT (WINAPI *LPDPSP_CLOSE)(void);
276typedef HRESULT (WINAPI *LPDPSP_SENDTOGROUP)(LPDPSP_SENDTOGROUPDATA);
277typedef HRESULT (WINAPI *LPDPSP_SHUTDOWNEX)(LPDPSP_SHUTDOWNDATA);
278typedef HRESULT (WINAPI *LPDPSP_CLOSEEX)(LPDPSP_CLOSEDATA);
279typedef HRESULT (WINAPI *LPDPSP_SENDEX)(LPDPSP_SENDEXDATA);
280typedef HRESULT (WINAPI *LPDPSP_SENDTOGROUPEX)(LPDPSP_SENDTOGROUPEXDATA);
281typedef HRESULT (WINAPI *LPDPSP_CANCEL)(LPDPSP_CANCELDATA);
282typedef HRESULT (WINAPI *LPDPSP_GETMESSAGEQUEUE)(LPDPSP_GETMESSAGEQUEUEDATA);
283
284
285typedef struct tagDPSP_SPCALLBACKS
286{
287 DWORD dwSize;
288 DWORD dwVersion;
289
290 LPDPSP_ENUMSESSIONS EnumSessions; /* Must be provided */
291 LPDPSP_REPLY Reply; /* Must be provided */
292 LPDPSP_SEND Send; /* Must be provided */
293 LPDPSP_ADDPLAYERTOGROUP AddPlayerToGroup; /* Optional */
294 LPDPSP_CLOSE Close; /* Optional */
295 LPDPSP_CREATEGROUP CreateGroup; /* Optional */
296 LPDPSP_CREATEPLAYER CreatePlayer; /* Optional */
297 LPDPSP_DELETEGROUP DeleteGroup; /* Optional */
298 LPDPSP_DELETEPLAYER DeletePlayer; /* Optional */
299 LPDPSP_GETADDRESS GetAddress; /* Optional */
300 LPDPSP_GETCAPS GetCaps; /* Optional */
301 LPDPSP_OPEN Open; /* Optional */
302 LPDPSP_REMOVEPLAYERFROMGROUP RemovePlayerFromGroup; /* Optional */
303 LPDPSP_SENDTOGROUP SendToGroup; /* Optional */
304 LPDPSP_SHUTDOWN Shutdown; /* Optional */
305
306 LPDPSP_CLOSEEX CloseEx; /* Optional */
307 LPDPSP_SHUTDOWNEX ShutdownEx; /* Optional */
308 LPDPSP_GETADDRESSCHOICES GetAddressChoices; /* Optional */
309
310 LPDPSP_SENDEX SendEx; /* Optional */
311 LPDPSP_SENDTOGROUPEX SendToGroupEx; /* Optional */
312 LPDPSP_CANCEL Cancel; /* Optional */
313 LPDPSP_GETMESSAGEQUEUE GetMessageQueue; /* Optional */
314} DPSP_SPCALLBACKS, *LPDPSP_SPCALLBACKS;
315
316typedef struct tagSPINITDATA
317{
318 LPDPSP_SPCALLBACKS lpCB;
319 IDirectPlaySP* lpISP;
320 LPWSTR lpszName;
321 LPGUID lpGuid;
322 DWORD dwReserved1;
323 DWORD dwReserved2;
324 DWORD dwSPHeaderSize;
325 LPDPADDRESS lpAddress;
326 DWORD dwAddressSize;
327 DWORD dwSPVersion;
328} SPINITDATA, *LPSPINITDATA;
329
330typedef HRESULT (WINAPI *LPDPSP_SPINIT)(LPSPINITDATA);
331
332/* This variable is exported from the DLL at ordinal 6 to be accessed by the
333 * SP directly
334 */
335extern __declspec(dllimport) DWORD gdwDPlaySPRefCount;
336
337#endif
338
Note: See TracBrowser for help on using the repository browser.