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

Last change on this file since 4316 was 4314, checked in by hugh, 25 years ago

Updated to latest wine version

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