dplayx: Adjusted timers to the values in the documentation
[wine/gsoc_dplay.git] / dlls / dplayx / dplayx_messages.h
blobef68b00add307e4743a512e262af843461d3cce6
1 /*
2 * Copyright 2000 Peter Hunnisett
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.
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.
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
19 #ifndef __WINE_DPLAYX_MESSAGES__
20 #define __WINE_DPLAYX_MESSAGES__
22 #include <stdarg.h>
24 #include "windef.h"
25 #include "winbase.h"
26 #include "winsock2.h"
27 #include "dplay.h"
28 #include "rpc.h" /* For GUID */
30 #include "dplay_global.h"
32 DWORD CreateLobbyMessageReceptionThread( HANDLE hNotifyEvent, HANDLE hStart,
33 HANDLE hDeath, HANDLE hConnRead );
35 HRESULT DP_MSG_SendRequestPlayerId( IDirectPlay2AImpl* This, DWORD dwFlags,
36 LPDPID lpdipidAllocatedId );
37 HRESULT DP_MSG_ForwardPlayerCreation( IDirectPlay2AImpl* This, DPID dpidServer );
39 void DP_MSG_ReplyReceived( IDirectPlay2AImpl* This, WORD wCommandId,
40 LPCVOID lpMsgBody, DWORD dwMsgBodySize );
41 void DP_MSG_ErrorReceived( IDirectPlay2AImpl* This, WORD wCommandId,
42 LPCVOID lpMsgBody, DWORD dwMsgBodySize );
44 /* Timings -> 1000 ticks/sec */
45 #define DPMSG_WAIT_5_SECS 5000
46 #define DPMSG_WAIT_30_SECS 30000
47 #define DPMSG_WAIT_60_SECS 60000
48 #define DPMSG_DEFAULT_WAIT_TIME DPMSG_WAIT_30_SECS
49 #define DPMSG_RELIABLE_API_TIMER 5000
50 #define DPMSG_LOGON_TIMER 25000
51 #define DPMSG_PACKETIZE_BASE_TIMER 900
52 #define DPMSG_PING_TIMER 35000
53 #define DPMSG_NAMETABLE_TIMER 15000
55 /* Message types etc. */
56 #include "pshpack1.h"
59 /* DirectX versions */
60 #define DX6VERSION 9
61 #define DX61VERSION 10
62 #define DX61AVERSION 11
63 #define DX71VERSION 12
64 #define DX8VERSION 13
65 #define DX9VERSION 14
67 /* MAGIC number at the start of all dplay packets ("play" in ASCII) */
68 #define DPMSG_SIGNATURE 0x79616c70
70 typedef struct tagDPLAYI_PACKEDPLAYER
72 DWORD Size;
73 DWORD Flags;
74 DPID PlayerID;
75 DWORD ShortNameLength;
76 DWORD LongNameLength;
77 DWORD ServiceProviderDataSize;
78 DWORD PlayerDataSize;
79 DWORD NumberOfPlayers;
80 DPID SystemPlayerID;
81 DWORD FixedSize;
82 DWORD PlayerVersion;
83 DPID ParentID;
84 } DPLAYI_PACKEDPLAYER, *LPDPLAYI_PACKEDPLAYER;
85 typedef const DPLAYI_PACKEDPLAYER* LPCDPLAYI_PACKEDPLAYER;
88 typedef struct tagDPLAYI_SUPERPACKEDPLAYER
90 DWORD Size;
91 DWORD Flags;
92 DPID ID;
93 DWORD PlayerInfoMask;
94 DWORD VersionOrSystemPlayerID;
95 } DPLAYI_SUPERPACKEDPLAYER, *LPDPLAYI_SUPERPACKEDPLAYER;
96 typedef const DPLAYI_SUPERPACKEDPLAYER* LPCDPLAYI_SUPERPACKEDPLAYER;
98 /* DPLAYI_SUPERPACKEDPLAYER->Flags for PlayerInfoMask */
99 #define SPP_SN 0x00000001
100 #define SPP_LN 0x00000002
101 #define SPP_PI 0x00000100
102 #define SPP_SL_OFFSET 2
103 #define SPP_PD_OFFSET 4
104 #define SPP_PC_OFFSET 6
105 #define SPP_SC_OFFSET 9
107 static inline DWORD spp_get_optimum_size( DWORD value )
109 /* Returns: the minimum size in bytes needed to
110 * allocate the variable. Can be 1, 2 or 4. */
111 if ( value > 0xFFFF )
112 return 4;
113 if ( value > 0xFF )
114 return 2;
115 return 1;
118 static inline DWORD spp_size2flags( DWORD size, DWORD offset )
120 /* Returns: the PlayerInfoMask flags asociated to
121 * the given size in bytes. */
122 if ( size == 4 )
123 size = 3;
124 return size << offset;
127 static inline DWORD spp_flags2size( DWORD flags, DWORD offset )
129 /* Returns: the size in bytes asociated to the
130 * given PlayerInfoMask flags. */
131 DWORD size = ( flags >> offset ) & 0x000000FF;
132 if ( size == 3 )
133 return 4;
134 else
135 return size;
139 /* Messages */
140 #define DPMSGCMD_ENUMSESSIONSREPLY 0x0001
141 #define DPMSGCMD_ENUMSESSIONS 0x0002
142 #define DPMSGCMD_ENUMPLAYERSREPLY 0x0003
143 #define DPMSGCMD_ENUMPLAYER 0x0004
144 #define DPMSGCMD_REQUESTPLAYERID 0x0005
145 #define DPMSGCMD_REQUESTGROUPID 0x0006
146 #define DPMSGCMD_REQUESTPLAYERREPLY 0x0007
147 #define DPMSGCMD_CREATEPLAYER 0x0008
148 #define DPMSGCMD_CREATEGROUP 0x0009
149 #define DPMSGCMD_PLAYERMESSAGE 0x000A
150 #define DPMSGCMD_DELETEPLAYER 0x000B
151 #define DPMSGCMD_DELETEGROUP 0x000C
152 #define DPMSGCMD_ADDPLAYERTOGROUP 0x000D
153 #define DPMSGCMD_DELETEPLAYERFROMGROUP 0x000E
154 #define DPMSGCMD_PLAYERDATACHANGED 0x000F
155 #define DPMSGCMD_PLAYERNAMECHANGED 0x0010
156 #define DPMSGCMD_GROUPDATACHANGED 0x0011
157 #define DPMSGCMD_GROUPNAMECHANGED 0x0012
158 #define DPMSGCMD_ADDFORWARDREQUEST 0x0013
159 #define DPMSGCMD_PACKET 0x0015
160 #define DPMSGCMD_PING 0x0016
161 #define DPMSGCMD_PINGREPLY 0x0017
162 #define DPMSGCMD_YOUAREDEAD 0x0018
163 #define DPMSGCMD_PLAYERWRAPPER 0x0019
164 #define DPMSGCMD_SESSIONDESCCHANGED 0x001A
165 #define DPMSGCMD_CHALLENGE 0x001C
166 #define DPMSGCMD_ACCESSGRANTED 0x001D
167 #define DPMSGCMD_LOGONDENIED 0x001E
168 #define DPMSGCMD_AUTHERROR 0x001F
169 #define DPMSGCMD_NEGOTIATE 0x0020
170 #define DPMSGCMD_CHALLENGERESPONSE 0x0021
171 #define DPMSGCMD_SIGNED 0x0022
172 #define DPMSGCMD_ADDFORWARDREPLY 0x0024
173 #define DPMSGCMD_ASK4MULTICAST 0x0025
174 #define DPMSGCMD_ASK4MULTICASTGUARANTEED 0x0026
175 #define DPMSGCMD_ADDSHORTCUTTOGROUP 0x0027
176 #define DPMSGCMD_DELETEGROUPFROMGROUP 0x0028
177 #define DPMSGCMD_SUPERENUMPLAYERSREPLY 0x0029
178 #define DPMSGCMD_KEYEXCHANGE 0x002B
179 #define DPMSGCMD_KEYEXCHANGEREPLY 0x002C
180 #define DPMSGCMD_CHAT 0x002D
181 #define DPMSGCMD_ADDFORWARD 0x002E
182 #define DPMSGCMD_ADDFORWARDACK 0x002F
183 #define DPMSGCMD_PACKET2_DATA 0x0030
184 #define DPMSGCMD_PACKET2_ACK 0x0031
185 #define DPMSGCMD_IAMNAMESERVER 0x0035
186 #define DPMSGCMD_VOICE 0x0036
187 #define DPMSGCMD_MULTICASTDELIVERY 0x0037
188 #define DPMSGCMD_CREATEPLAYERVERIFY 0x0038
192 typedef struct tagDPSP_MSG_ENVELOPE
194 DWORD dwMagic;
195 WORD wCommandId;
196 WORD wVersion;
197 } DPSP_MSG_ENVELOPE, *LPDPSP_MSG_ENVELOPE;
198 typedef const DPSP_MSG_ENVELOPE* LPCDPSP_MSG_ENVELOPE;
201 typedef struct tagDPSP_MSG_ENUMSESSIONSREPLY
203 DPSP_MSG_ENVELOPE envelope;
204 DPSESSIONDESC2 SessionDescription;
205 DWORD NameOffset;
206 } DPSP_MSG_ENUMSESSIONSREPLY, *LPDPSP_MSG_ENUMSESSIONSREPLY;
207 typedef const DPSP_MSG_ENUMSESSIONSREPLY* LPCDPSP_MSG_ENUMSESSIONSREPLY;
210 typedef struct tagDPSP_MSG_ENUMSESSIONS
212 DPSP_MSG_ENVELOPE envelope;
213 GUID ApplicationGuid;
214 DWORD PasswordOffset;
215 DWORD Flags;
216 } DPSP_MSG_ENUMSESSIONS, *LPDPSP_MSG_ENUMSESSIONS;
217 typedef const DPSP_MSG_ENUMSESSIONS* LPCDPSP_MSG_ENUMSESSIONS;
220 typedef struct tagDPSP_MSG_ENUMPLAYERSREPLY
222 DPSP_MSG_ENVELOPE envelope;
223 DWORD PlayerCount;
224 DWORD GroupCount;
225 DWORD PackedOffset;
226 DWORD ShortcutCount;
227 DWORD DescriptionOffset;
228 DWORD NameOffset;
229 DWORD PasswordOffset;
230 DPSESSIONDESC2 DPSessionDesc;
231 } DPSP_MSG_ENUMPLAYERSREPLY, *LPDPSP_MSG_ENUMPLAYERSREPLY,
232 DPSP_MSG_SUPERENUMPLAYERSREPLY, *LPDPSP_MSG_SUPERENUMPLAYERSREPLY;
233 typedef const DPSP_MSG_ENUMPLAYERSREPLY* LPCDPSP_MSG_ENUMPLAYERSREPLY;
234 typedef const DPSP_MSG_SUPERENUMPLAYERSREPLY* LPCDPSP_MSG_SUPERENUMPLAYERSREPLY;
237 typedef struct tagDPSP_MSG_ENUMPLAYER
239 DPSP_MSG_ENVELOPE envelope;
240 } DPSP_MSG_ENUMPLAYER, *LPDPSP_MSG_ENUMPLAYER,
241 DPSP_MSG_YOUAREDEAD, *LPDPSP_MSG_YOUAREDEAD,
242 DPSP_MSG_LOGONDENIED, *LPDPSP_MSG_LOGONDENIED;
243 typedef const DPSP_MSG_ENUMPLAYER* LPCDPSP_MSG_ENUMPLAYER;
244 typedef const DPSP_MSG_YOUAREDEAD* LPCDPSP_MSG_YOUAREDEAD;
245 typedef const DPSP_MSG_LOGONDENIED* LPCDPSP_MSG_LOGONDENIED;
248 typedef struct tagDPSP_MSG_REQUESTPLAYERID
250 DPSP_MSG_ENVELOPE envelope;
251 DWORD Flags;
252 } DPSP_MSG_REQUESTPLAYERID, *LPDPSP_MSG_REQUESTPLAYERID,
253 DPSP_MSG_REQUESTGROUPID, *LPDPSP_MSG_REQUESTGROUPID;
254 typedef const DPSP_MSG_REQUESTPLAYERID* LPCDPSP_MSG_REQUESTPLAYERID;
255 typedef const DPSP_MSG_REQUESTGROUPID* LPCDPSP_MSG_REQUESTGROUPID;
257 /* DPSP_MSG_REQUESTGROUPID->Flags */
258 #define REQUESTGROUPID_PL 0x00000004
259 #define REQUESTGROUPID_SS 0x00000200
262 typedef struct tagDPSP_MSG_REQUESTPLAYERREPLY
264 DPSP_MSG_ENVELOPE envelope;
265 DPID ID;
266 DPSECURITYDESC SecDesc;
267 DWORD SSPIProviderOffset;
268 DWORD CAPIProviderOffset;
269 HRESULT Result;
270 } DPSP_MSG_REQUESTPLAYERREPLY, *LPDPSP_MSG_REQUESTPLAYERREPLY;
271 typedef const DPSP_MSG_REQUESTPLAYERREPLY* LPCDPSP_MSG_REQUESTPLAYERREPLY;
274 typedef struct tagDPSP_MSG_ADDFORWARD
276 DPSP_MSG_ENVELOPE envelope;
277 DPID IDTo;
278 DPID PlayerID;
279 DPID GroupID;
280 DWORD CreateOffset;
281 DWORD PasswordOffset;
282 } DPSP_MSG_CREATEPLAYER, *LPDPSP_MSG_CREATEPLAYER,
283 DPSP_MSG_ADDFORWARD, *LPDPSP_MSG_ADDFORWARD,
284 DPSP_MSG_CREATEPLAYERVERIFY, *LPDPSP_MSG_CREATEPLAYERVERIFY,
285 DPSP_MSG_CREATEGROUP, *LPDPSP_MSG_CREATEGROUP;
286 typedef const DPSP_MSG_CREATEPLAYER* LPCDPSP_MSG_CREATEPLAYER;
287 typedef const DPSP_MSG_ADDFORWARD* LPCDPSP_MSG_ADDFORWARD;
288 typedef const DPSP_MSG_CREATEPLAYERVERIFY* LPCDPSP_MSG_CREATEPLAYERVERIFY;
289 typedef const DPSP_MSG_CREATEGROUP* LPCDPSP_MSG_CREATEGROUP;
292 typedef struct tagDPSP_MSG_PLAYERMESSAGE
294 DPSP_MSG_ENVELOPE envelope;
295 DWORD size; /* size & 0x000FFFFF, token & 0xFFF00000 */
296 SOCKADDR_IN sockaddr;
297 DPID idFrom;
298 DPID idTo;
299 } DPSP_MSG_PLAYERMESSAGE, *LPDPSP_MSG_PLAYERMESSAGE;
300 typedef const DPSP_MSG_PLAYERMESSAGE* LPCDPSP_MSG_PLAYERMESSAGE;
303 typedef struct tagDPSP_MSG_DELETEPLAYER
305 DPSP_MSG_ENVELOPE envelope;
306 DPID IDTo;
307 DPID PlayerID;
308 /* "GroupID" in ADDSHORTCUTTOGROUP and DELETEGROUPFROMGROUP */
309 DPID ChildGroupID;
310 /* "ParentGroupID" in ADDSHORTCUTTOGROUP and DELETEGROUPFROMGROUP */
311 DWORD CreateOffset;
312 DWORD PasswordOffset;
313 } DPSP_MSG_DELETEPLAYER, *LPDPSP_MSG_DELETEPLAYER,
314 DPSP_MSG_DELETEGROUP, *LPDPSP_MSG_DELETEGROUP,
315 DPSP_MSG_ADDPLAYERTOGROUP, *LPDPSP_MSG_ADDPLAYERTOGROUP,
316 DPSP_MSG_DELETEPLAYERFROMGROUP, *LPDPSP_MSG_DELETEPLAYERFROMGROUP,
317 DPSP_MSG_ADDSHORTCUTTOGROUP, *LPDPSP_MSG_ADDSHORTCUTTOGROUP,
318 DPSP_MSG_DELETEGROUPFROMGROUP, *LPDPSP_MSG_DELETEGROUPFROMGROUP;
319 typedef const DPSP_MSG_DELETEPLAYER* LPCDPSP_MSG_DELETEPLAYER;
320 typedef const DPSP_MSG_DELETEGROUP* LPCDPSP_MSG_DELETEGROUP;
321 typedef const DPSP_MSG_ADDPLAYERTOGROUP* LPCDPSP_MSG_ADDPLAYERTOGROUP;
322 typedef const DPSP_MSG_DELETEPLAYERFROMGROUP* LPCDPSP_MSG_DELETEPLAYERFROMGROUP;
323 typedef const DPSP_MSG_ADDSHORTCUTTOGROUP* LPCDPSP_MSG_ADDSHORTCUTTOGROUP;
324 typedef const DPSP_MSG_DELETEGROUPFROMGROUP* LPCDPSP_MSG_DELETEGROUPFROMGROUP;
327 typedef struct tagDPSP_MSG_PLAYERDATACHANGED
329 DPSP_MSG_ENVELOPE envelope;
330 DPID IDTo;
331 DPID PlayerID;
332 DWORD DataOffset;
333 } DPSP_MSG_PLAYERDATACHANGED, *LPDPSP_MSG_PLAYERDATACHANGED;
334 typedef const DPSP_MSG_PLAYERDATACHANGED* LPCDPSP_MSG_PLAYERDATACHANGED;
337 typedef struct tagDPSP_MSG_PLAYERNAMECHANGED
339 DPSP_MSG_ENVELOPE envelope;
340 DPID IDTo;
341 DPID PlayerID;
342 DWORD ShortOffset;
343 DWORD LongOffset;
344 } DPSP_MSG_PLAYERNAMECHANGED, *LPDPSP_MSG_PLAYERNAMECHANGED;
345 typedef const DPSP_MSG_PLAYERNAMECHANGED* LPCDPSP_MSG_PLAYERNAMECHANGED;
348 typedef struct tagDPSP_MSG_GROUPDATACHANGED
350 DPSP_MSG_ENVELOPE envelope;
351 DPID IDTo;
352 DPID GroupID;
353 DWORD dwDataSize;
354 DWORD dwDataOffset;
355 } DPSP_MSG_GROUPDATACHANGED, *LPDPSP_MSG_GROUPDATACHANGED;
356 typedef const DPSP_MSG_GROUPDATACHANGED* LPCDPSP_MSG_GROUPDATACHANGED;
359 typedef struct tagDPSP_MSG_GROUPNAMECHANGED
361 DPSP_MSG_ENVELOPE envelope;
362 DPID IDTo;
363 DPID GroupID;
364 DWORD ShortOffset;
365 DWORD LongOffset;
366 } DPSP_MSG_GROUPNAMECHANGED, *LPDPSP_MSG_GROUPNAMECHANGED;
367 typedef const DPSP_MSG_GROUPNAMECHANGED* LPCDPSP_MSG_GROUPNAMECHANGED;
370 typedef struct tagDPSP_MSG_ADDFORWARDREQUEST
372 DPSP_MSG_ENVELOPE envelope;
373 DPID IDTo;
374 DPID PlayerID;
375 DPID GroupID;
376 DWORD CreateOffset;
377 DWORD PasswordOffset;
378 } DPSP_MSG_ADDFORWARDREQUEST, *LPDPSP_MSG_ADDFORWARDREQUEST;
379 typedef const DPSP_MSG_ADDFORWARDREQUEST* LPCDPSP_MSG_ADDFORWARDREQUEST;
382 typedef struct tagDPSP_MSG_PACKET
384 DPSP_MSG_ENVELOPE envelope;
385 GUID GuidMessage;
386 DWORD PacketIndex;
387 DWORD DataSize;
388 DWORD Offset;
389 DWORD TotalPackets;
390 DWORD MessageSize;
391 DWORD PackedOffset;
392 } DPSP_MSG_PACKET, *LPDPSP_MSG_PACKET,
393 DPSP_MSG_PACKET2_DATA, *LPDPSP_MSG_PACKET2_DATA;
394 typedef const DPSP_MSG_PACKET* LPCDPSP_MSG_PACKET;
395 typedef const DPSP_MSG_PACKET2_DATA* LPCDPSP_MSG_PACKET2_DATA;
398 typedef struct tagDPSP_MSG_PING
400 DPSP_MSG_ENVELOPE envelope;
401 DPID IDFrom;
402 DWORD TickCount;
403 } DPSP_MSG_PING, *LPDPSP_MSG_PING,
404 DPSP_MSG_PINGREPLY, *LPDPSP_MSG_PINGREPLY;
405 typedef const DPSP_MSG_PING* LPCDPSP_MSG_PING;
406 typedef const DPSP_MSG_PINGREPLY* LPCDPSP_MSG_PINGREPLY;
409 typedef struct tagDPSP_MSG_PLAYERWRAPPER
411 DPSP_MSG_ENVELOPE envelope;
412 DPSP_MSG_PLAYERMESSAGE PlayerMessage;
413 } DPSP_MSG_PLAYERWRAPPER, *LPDPSP_MSG_PLAYERWRAPPER;
414 typedef const DPSP_MSG_PLAYERWRAPPER* LPCDPSP_MSG_PLAYERWRAPPER;
417 typedef struct tagDPSP_MSG_SESSIONDESCCHANGED
419 DPSP_MSG_ENVELOPE envelope;
420 DPID IDTo;
421 DWORD SessionNameOffset;
422 DWORD PasswordOffset;
423 DPSESSIONDESC2 SessionDesc;
424 } DPSP_MSG_SESSIONDESCCHANGED, *LPDPSP_MSG_SESSIONDESCCHANGED;
425 typedef const DPSP_MSG_SESSIONDESCCHANGED* LPCDPSP_MSG_SESSIONDESCCHANGED;
428 typedef struct tagDPSP_MSG_CHALLENGE
430 DPSP_MSG_ENVELOPE envelope;
431 DPID IDFrom;
432 DWORD DataSize;
433 DWORD DataOffset;
434 } DPSP_MSG_CHALLENGE, *LPDPSP_MSG_CHALLENGE;
435 typedef const DPSP_MSG_CHALLENGE* LPCDPSP_MSG_CHALLENGE;
438 typedef struct tagDPSP_MSG_ACCESSGRANTED
440 DPSP_MSG_ENVELOPE envelope;
441 DWORD PublicKeySize;
442 DWORD PublicKeyOffset;
443 } DPSP_MSG_ACCESSGRANTED, *LPDPSP_MSG_ACCESSGRANTED;
444 typedef const DPSP_MSG_ACCESSGRANTED* LPCDPSP_MSG_ACCESSGRANTED;
447 typedef struct tagDPSP_MSG_NEGOTIATE
449 DPSP_MSG_ENVELOPE envelope;
450 DPID IDFrom;
451 DWORD DataSize;
452 DWORD DataOffset;
453 } DPSP_MSG_NEGOTIATE, *LPDPSP_MSG_NEGOTIATE,
454 DPSP_MSG_CHALLENGERESPONSE, *LPDPSP_MSG_CHALLENGERESPONSE;
455 typedef const DPSP_MSG_NEGOTIATE* LPCDPSP_MSG_NEGOTIATE;
456 typedef const DPSP_MSG_CHALLENGERESPONSE* LPCDPSP_MSG_CHALLENGERESPONSE;
459 typedef struct tagDPSP_MSG_SIGNED
461 DPSP_MSG_ENVELOPE envelope;
462 DPID IDFrom;
463 DWORD DataOffset;
464 DWORD DataSize;
465 DWORD SignatureSize;
466 DWORD Flags;
467 } DPSP_MSG_SIGNED, *LPDPSP_MSG_SIGNED;
468 typedef const DPSP_MSG_SIGNED* LPCDPSP_MSG_SIGNED;
470 /* DPSP_MSG_SIGNED->Flags */
471 #define SIGNED_SS 0x00000001
472 #define SIGNED_SC 0x00000002
473 #define SIGNED_EC 0x00000004
476 typedef struct tagDPSP_MSG_ADDFORWARDREPLY
478 DPSP_MSG_ENVELOPE envelope;
479 HRESULT Error;
480 } DPSP_MSG_ADDFORWARDREPLY, *LPDPSP_MSG_ADDFORWARDREPLY,
481 DPSP_MSG_AUTHERROR, *LPDPSP_MSG_AUTHERROR;
482 typedef const DPSP_MSG_ADDFORWARDREPLY* LPCDPSP_MSG_ADDFORWARDREPLY;
483 typedef const DPSP_MSG_AUTHERROR* LPCDPSP_MSG_AUTHERROR;
487 typedef struct tagDPSP_MSG_ASK4MULTICAST
489 DPSP_MSG_ENVELOPE envelope;
490 DPID GroupTo;
491 DPID PlayerFrom;
492 DWORD MessageOffset;
493 } DPSP_MSG_ASK4MULTICAST, *LPDPSP_MSG_ASK4MULTICAST,
494 DPSP_MSG_ASK4MULTICASTGUARANTEED, *LPDPSP_MSG_ASK4MULTICASTGUARANTEED;
495 typedef const DPSP_MSG_ASK4MULTICAST* LPCDPSP_MSG_ASK4MULTICAST;
496 typedef const DPSP_MSG_ASK4MULTICASTGUARANTEED* LPCDPSP_MSG_ASK4MULTICASTGUARANTEED;
499 typedef struct tagDPSP_MSG_KEYEXCHANGE
501 DPSP_MSG_ENVELOPE envelope;
502 DWORD SessionKeyOffset;
503 DWORD PublicKeySize;
504 DWORD PublicKeyOffset;
505 } DPSP_MSG_KEYEXCHANGE, *LPDPSP_MSG_KEYEXCHANGE;
506 typedef const DPSP_MSG_KEYEXCHANGE* LPCDPSP_MSG_KEYEXCHANGE;
509 typedef struct tagDPSP_MSG_KEYEXCHANGEREPLY
511 DPSP_MSG_ENVELOPE envelope;
512 DWORD SessionKeySize;
513 DWORD SessionKeyOffset;
514 DWORD PublicKeyOffset;
515 } DPSP_MSG_KEYEXCHANGEREPLY, *LPDPSP_MSG_KEYEXCHANGEREPLY;
516 typedef const DPSP_MSG_KEYEXCHANGEREPLY* LPCDPSP_MSG_KEYEXCHANGEREPLY;
519 typedef struct tagDPSP_MSG_CHAT
521 DPSP_MSG_ENVELOPE envelope;
522 DPID IDFrom;
523 DPID IDTo;
524 DWORD Flags;
525 DWORD MessageOffset;
526 } DPSP_MSG_CHAT, *LPDPSP_MSG_CHAT;
527 typedef const DPSP_MSG_CHAT* LPCDPSP_MSG_CHAT;
529 /* DPSP_MSG_CHAT->Flags */
530 #define CHAT_GS 0x00000001
533 typedef struct tagDPSP_MSG_ADDFORWARDACK
535 DPSP_MSG_ENVELOPE envelope;
536 DPID ID;
537 } DPSP_MSG_ADDFORWARDACK, *LPDPSP_MSG_ADDFORWARDACK;
538 typedef const DPSP_MSG_ADDFORWARDACK* LPCDPSP_MSG_ADDFORWARDACK;
541 typedef struct tagDPSP_MSG_PACKET2_ACK
543 DPSP_MSG_ENVELOPE envelope;
544 GUID GuidMessage;
545 DPID PacketID;
546 } DPSP_MSG_PACKET2_ACK, *LPDPSP_MSG_PACKET2_ACK;
547 typedef const DPSP_MSG_PACKET2_ACK* LPCDPSP_MSG_PACKET2_ACK;
550 typedef struct tagDPSP_MSG_IAMNAMESERVER
552 DPSP_MSG_ENVELOPE envelope;
553 DPID IDTo;
554 DPID IDHost;
555 DWORD Flags;
556 DWORD SPDataSize;
557 } DPSP_MSG_IAMNAMESERVER, *LPDPSP_MSG_IAMNAMESERVER;
558 typedef const DPSP_MSG_IAMNAMESERVER* LPCDPSP_MSG_IAMNAMESERVER;
561 typedef struct tagDPSP_MSG_VOICE
563 DPSP_MSG_ENVELOPE envelope;
564 DPID dwIDFrom;
565 DPID dwIDTo;
566 } DPSP_MSG_VOICE, *LPDPSP_MSG_VOICE;
567 typedef const DPSP_MSG_VOICE* LPCDPSP_MSG_VOICE;
570 typedef struct tagDPSP_MSG_MULTICASTDELIVERY
572 DPSP_MSG_ENVELOPE envelope;
573 DPID GroupIDTo;
574 DPID PlayerIDFrom;
575 DWORD MessageOffset;
576 } DPSP_MSG_MULTICASTDELIVERY, *LPDPSP_MSG_MULTICASTDELIVERY;
577 typedef const DPSP_MSG_MULTICASTDELIVERY* LPCDPSP_MSG_MULTICASTDELIVERY;
580 #include "poppack.h"
582 #endif