dplayx: Code to parse PlayerEnumeration messages
[wine/gsoc_dplay.git] / dlls / dplayx / dplayx_messages.h
blob496b379096f54d23b1a3c43f3bfbf5a1604db80e
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_SendCreatePlayer( IDirectPlay2AImpl* This, lpPlayerData lpData );
38 HRESULT DP_MSG_ForwardPlayerCreation( IDirectPlay2AImpl* This, DPID dpidServer );
39 void DP_MSG_ReplyToEnumPlayersRequest( IDirectPlay2Impl* lpDP, LPVOID* lplpReply,
40 LPDWORD lpdwMsgSize );
41 DWORD DP_MSG_ParsePackedPlayer( IDirectPlay2Impl* lpDP,
42 LPBYTE lpPackedPlayer,
43 LPPACKEDPLAYERDATA lpData,
44 BOOL bIsGroup,
45 BOOL bAnsi );
47 BOOL DP_MSG_ReplyReceived( IDirectPlay2AImpl* This, WORD wCommandId,
48 LPCVOID lpMsgHdr, LPCVOID lpMsgBody,
49 DWORD dwMsgBodySize );
50 void DP_MSG_ErrorReceived( IDirectPlay2AImpl* This, WORD wCommandId,
51 LPCVOID lpMsgBody, DWORD dwMsgBodySize );
53 /* Timings -> 1000 ticks/sec */
54 #define DPMSG_WAIT_5_SECS 5000
55 #define DPMSG_WAIT_30_SECS 30000
56 #define DPMSG_WAIT_60_SECS 60000
57 #define DPMSG_DEFAULT_WAIT_TIME DPMSG_WAIT_30_SECS
58 #define DPMSG_RELIABLE_API_TIMER 5000
59 #define DPMSG_LOGON_TIMER 25000
60 #define DPMSG_PACKETIZE_BASE_TIMER 900
61 #define DPMSG_PING_TIMER 35000
62 #define DPMSG_NAMETABLE_TIMER 15000
64 /* Message types etc. */
65 #include "pshpack1.h"
68 /* DirectX versions */
69 #define DX6VERSION 9
70 #define DX61VERSION 10
71 #define DX61AVERSION 11
72 #define DX71VERSION 12
73 #define DX8VERSION 13
74 #define DX9VERSION 14
76 /* MAGIC number at the start of all dplay packets ("play" in ASCII) */
77 #define DPMSG_SIGNATURE 0x79616c70
79 typedef struct tagDPLAYI_PACKEDPLAYER
81 DWORD Size;
82 DWORD Flags;
83 DPID PlayerID;
84 DWORD ShortNameLength;
85 DWORD LongNameLength;
86 DWORD ServiceProviderDataSize;
87 DWORD PlayerDataSize;
88 DWORD NumberOfPlayers;
89 DPID SystemPlayerID;
90 DWORD FixedSize;
91 DWORD PlayerVersion;
92 DPID ParentID;
93 } DPLAYI_PACKEDPLAYER, *LPDPLAYI_PACKEDPLAYER;
94 typedef const DPLAYI_PACKEDPLAYER* LPCDPLAYI_PACKEDPLAYER;
97 typedef struct tagDPLAYI_SUPERPACKEDPLAYER
99 DWORD Size;
100 DWORD Flags;
101 DPID ID;
102 DWORD PlayerInfoMask;
103 DWORD VersionOrSystemPlayerID;
104 } DPLAYI_SUPERPACKEDPLAYER, *LPDPLAYI_SUPERPACKEDPLAYER;
105 typedef const DPLAYI_SUPERPACKEDPLAYER* LPCDPLAYI_SUPERPACKEDPLAYER;
107 /* DPLAYI_SUPERPACKEDPLAYER->Flags for PlayerInfoMask */
108 #define SPP_SN 0x00000001
109 #define SPP_LN 0x00000002
110 #define SPP_PI 0x00000100
111 #define SPP_SL_OFFSET 2
112 #define SPP_PD_OFFSET 4
113 #define SPP_PC_OFFSET 6
114 #define SPP_SC_OFFSET 9
116 static inline DWORD spp_get_optimum_size( DWORD value )
118 /* Returns: the minimum size in bytes needed to
119 * allocate the variable. Can be 1, 2 or 4. */
120 if ( value > 0xFFFF )
121 return 4;
122 if ( value > 0xFF )
123 return 2;
124 return 1;
127 static inline DWORD spp_size2flags( DWORD size, DWORD offset )
129 /* Returns: the PlayerInfoMask flags asociated to
130 * the given size in bytes. */
131 if ( size == 4 )
132 size = 3;
133 return size << offset;
136 static inline DWORD spp_flags2size( DWORD flags, DWORD offset )
138 /* Returns: the size in bytes asociated to the
139 * given PlayerInfoMask flags. */
140 DWORD size = ( flags >> offset ) & 0x000000FF;
141 if ( size == 3 )
142 return 4;
143 else
144 return size;
148 /* Messages */
149 #define DPMSGCMD_ENUMSESSIONSREPLY 0x0001
150 #define DPMSGCMD_ENUMSESSIONS 0x0002
151 #define DPMSGCMD_ENUMPLAYERSREPLY 0x0003
152 #define DPMSGCMD_ENUMPLAYER 0x0004
153 #define DPMSGCMD_REQUESTPLAYERID 0x0005
154 #define DPMSGCMD_REQUESTGROUPID 0x0006
155 #define DPMSGCMD_REQUESTPLAYERREPLY 0x0007
156 #define DPMSGCMD_CREATEPLAYER 0x0008
157 #define DPMSGCMD_CREATEGROUP 0x0009
158 #define DPMSGCMD_PLAYERMESSAGE 0x000A
159 #define DPMSGCMD_DELETEPLAYER 0x000B
160 #define DPMSGCMD_DELETEGROUP 0x000C
161 #define DPMSGCMD_ADDPLAYERTOGROUP 0x000D
162 #define DPMSGCMD_DELETEPLAYERFROMGROUP 0x000E
163 #define DPMSGCMD_PLAYERDATACHANGED 0x000F
164 #define DPMSGCMD_PLAYERNAMECHANGED 0x0010
165 #define DPMSGCMD_GROUPDATACHANGED 0x0011
166 #define DPMSGCMD_GROUPNAMECHANGED 0x0012
167 #define DPMSGCMD_ADDFORWARDREQUEST 0x0013
168 #define DPMSGCMD_PACKET 0x0015
169 #define DPMSGCMD_PING 0x0016
170 #define DPMSGCMD_PINGREPLY 0x0017
171 #define DPMSGCMD_YOUAREDEAD 0x0018
172 #define DPMSGCMD_PLAYERWRAPPER 0x0019
173 #define DPMSGCMD_SESSIONDESCCHANGED 0x001A
174 #define DPMSGCMD_CHALLENGE 0x001C
175 #define DPMSGCMD_ACCESSGRANTED 0x001D
176 #define DPMSGCMD_LOGONDENIED 0x001E
177 #define DPMSGCMD_AUTHERROR 0x001F
178 #define DPMSGCMD_NEGOTIATE 0x0020
179 #define DPMSGCMD_CHALLENGERESPONSE 0x0021
180 #define DPMSGCMD_SIGNED 0x0022
181 #define DPMSGCMD_ADDFORWARDREPLY 0x0024
182 #define DPMSGCMD_ASK4MULTICAST 0x0025
183 #define DPMSGCMD_ASK4MULTICASTGUARANTEED 0x0026
184 #define DPMSGCMD_ADDSHORTCUTTOGROUP 0x0027
185 #define DPMSGCMD_DELETEGROUPFROMGROUP 0x0028
186 #define DPMSGCMD_SUPERENUMPLAYERSREPLY 0x0029
187 #define DPMSGCMD_KEYEXCHANGE 0x002B
188 #define DPMSGCMD_KEYEXCHANGEREPLY 0x002C
189 #define DPMSGCMD_CHAT 0x002D
190 #define DPMSGCMD_ADDFORWARD 0x002E
191 #define DPMSGCMD_ADDFORWARDACK 0x002F
192 #define DPMSGCMD_PACKET2_DATA 0x0030
193 #define DPMSGCMD_PACKET2_ACK 0x0031
194 #define DPMSGCMD_IAMNAMESERVER 0x0035
195 #define DPMSGCMD_VOICE 0x0036
196 #define DPMSGCMD_MULTICASTDELIVERY 0x0037
197 #define DPMSGCMD_CREATEPLAYERVERIFY 0x0038
201 typedef struct tagDPSP_MSG_ENVELOPE
203 DWORD dwMagic;
204 WORD wCommandId;
205 WORD wVersion;
206 } DPSP_MSG_ENVELOPE, *LPDPSP_MSG_ENVELOPE;
207 typedef const DPSP_MSG_ENVELOPE* LPCDPSP_MSG_ENVELOPE;
210 typedef struct tagDPSP_MSG_ENUMSESSIONSREPLY
212 DPSP_MSG_ENVELOPE envelope;
213 DPSESSIONDESC2 SessionDescription;
214 DWORD NameOffset;
215 } DPSP_MSG_ENUMSESSIONSREPLY, *LPDPSP_MSG_ENUMSESSIONSREPLY;
216 typedef const DPSP_MSG_ENUMSESSIONSREPLY* LPCDPSP_MSG_ENUMSESSIONSREPLY;
219 typedef struct tagDPSP_MSG_ENUMSESSIONS
221 DPSP_MSG_ENVELOPE envelope;
222 GUID ApplicationGuid;
223 DWORD PasswordOffset;
224 DWORD Flags;
225 } DPSP_MSG_ENUMSESSIONS, *LPDPSP_MSG_ENUMSESSIONS;
226 typedef const DPSP_MSG_ENUMSESSIONS* LPCDPSP_MSG_ENUMSESSIONS;
229 typedef struct tagDPSP_MSG_ENUMPLAYERSREPLY
231 DPSP_MSG_ENVELOPE envelope;
232 DWORD PlayerCount;
233 DWORD GroupCount;
234 DWORD PackedOffset;
235 DWORD ShortcutCount;
236 DWORD DescriptionOffset;
237 DWORD NameOffset;
238 DWORD PasswordOffset;
239 DPSESSIONDESC2 DPSessionDesc;
240 } DPSP_MSG_ENUMPLAYERSREPLY, *LPDPSP_MSG_ENUMPLAYERSREPLY,
241 DPSP_MSG_SUPERENUMPLAYERSREPLY, *LPDPSP_MSG_SUPERENUMPLAYERSREPLY;
242 typedef const DPSP_MSG_ENUMPLAYERSREPLY* LPCDPSP_MSG_ENUMPLAYERSREPLY;
243 typedef const DPSP_MSG_SUPERENUMPLAYERSREPLY* LPCDPSP_MSG_SUPERENUMPLAYERSREPLY;
246 typedef struct tagDPSP_MSG_ENUMPLAYER
248 DPSP_MSG_ENVELOPE envelope;
249 } DPSP_MSG_ENUMPLAYER, *LPDPSP_MSG_ENUMPLAYER,
250 DPSP_MSG_YOUAREDEAD, *LPDPSP_MSG_YOUAREDEAD,
251 DPSP_MSG_LOGONDENIED, *LPDPSP_MSG_LOGONDENIED;
252 typedef const DPSP_MSG_ENUMPLAYER* LPCDPSP_MSG_ENUMPLAYER;
253 typedef const DPSP_MSG_YOUAREDEAD* LPCDPSP_MSG_YOUAREDEAD;
254 typedef const DPSP_MSG_LOGONDENIED* LPCDPSP_MSG_LOGONDENIED;
257 typedef struct tagDPSP_MSG_REQUESTPLAYERID
259 DPSP_MSG_ENVELOPE envelope;
260 DWORD Flags;
261 } DPSP_MSG_REQUESTPLAYERID, *LPDPSP_MSG_REQUESTPLAYERID,
262 DPSP_MSG_REQUESTGROUPID, *LPDPSP_MSG_REQUESTGROUPID;
263 typedef const DPSP_MSG_REQUESTPLAYERID* LPCDPSP_MSG_REQUESTPLAYERID;
264 typedef const DPSP_MSG_REQUESTGROUPID* LPCDPSP_MSG_REQUESTGROUPID;
266 /* DPSP_MSG_REQUESTGROUPID->Flags */
267 #define REQUESTGROUPID_PL 0x00000004
268 #define REQUESTGROUPID_SS 0x00000200
271 typedef struct tagDPSP_MSG_REQUESTPLAYERREPLY
273 DPSP_MSG_ENVELOPE envelope;
274 DPID ID;
275 DPSECURITYDESC SecDesc;
276 DWORD SSPIProviderOffset;
277 DWORD CAPIProviderOffset;
278 HRESULT Result;
279 } DPSP_MSG_REQUESTPLAYERREPLY, *LPDPSP_MSG_REQUESTPLAYERREPLY;
280 typedef const DPSP_MSG_REQUESTPLAYERREPLY* LPCDPSP_MSG_REQUESTPLAYERREPLY;
283 typedef struct tagDPSP_MSG_ADDFORWARD
285 DPSP_MSG_ENVELOPE envelope;
286 DPID IDTo;
287 DPID PlayerID;
288 DPID GroupID;
289 DWORD CreateOffset;
290 DWORD PasswordOffset;
291 } DPSP_MSG_CREATEPLAYER, *LPDPSP_MSG_CREATEPLAYER,
292 DPSP_MSG_ADDFORWARD, *LPDPSP_MSG_ADDFORWARD,
293 DPSP_MSG_CREATEPLAYERVERIFY, *LPDPSP_MSG_CREATEPLAYERVERIFY,
294 DPSP_MSG_CREATEGROUP, *LPDPSP_MSG_CREATEGROUP;
295 typedef const DPSP_MSG_CREATEPLAYER* LPCDPSP_MSG_CREATEPLAYER;
296 typedef const DPSP_MSG_ADDFORWARD* LPCDPSP_MSG_ADDFORWARD;
297 typedef const DPSP_MSG_CREATEPLAYERVERIFY* LPCDPSP_MSG_CREATEPLAYERVERIFY;
298 typedef const DPSP_MSG_CREATEGROUP* LPCDPSP_MSG_CREATEGROUP;
301 typedef struct tagDPSP_MSG_PLAYERMESSAGE
303 DPSP_MSG_ENVELOPE envelope;
304 DWORD size; /* size & 0x000FFFFF, token & 0xFFF00000 */
305 SOCKADDR_IN sockaddr;
306 DPID idFrom;
307 DPID idTo;
308 } DPSP_MSG_PLAYERMESSAGE, *LPDPSP_MSG_PLAYERMESSAGE;
309 typedef const DPSP_MSG_PLAYERMESSAGE* LPCDPSP_MSG_PLAYERMESSAGE;
312 typedef struct tagDPSP_MSG_DELETEPLAYER
314 DPSP_MSG_ENVELOPE envelope;
315 DPID IDTo;
316 DPID PlayerID;
317 /* "GroupID" in ADDSHORTCUTTOGROUP and DELETEGROUPFROMGROUP */
318 DPID ChildGroupID;
319 /* "ParentGroupID" in ADDSHORTCUTTOGROUP and DELETEGROUPFROMGROUP */
320 DWORD CreateOffset;
321 DWORD PasswordOffset;
322 } DPSP_MSG_DELETEPLAYER, *LPDPSP_MSG_DELETEPLAYER,
323 DPSP_MSG_DELETEGROUP, *LPDPSP_MSG_DELETEGROUP,
324 DPSP_MSG_ADDPLAYERTOGROUP, *LPDPSP_MSG_ADDPLAYERTOGROUP,
325 DPSP_MSG_DELETEPLAYERFROMGROUP, *LPDPSP_MSG_DELETEPLAYERFROMGROUP,
326 DPSP_MSG_ADDSHORTCUTTOGROUP, *LPDPSP_MSG_ADDSHORTCUTTOGROUP,
327 DPSP_MSG_DELETEGROUPFROMGROUP, *LPDPSP_MSG_DELETEGROUPFROMGROUP;
328 typedef const DPSP_MSG_DELETEPLAYER* LPCDPSP_MSG_DELETEPLAYER;
329 typedef const DPSP_MSG_DELETEGROUP* LPCDPSP_MSG_DELETEGROUP;
330 typedef const DPSP_MSG_ADDPLAYERTOGROUP* LPCDPSP_MSG_ADDPLAYERTOGROUP;
331 typedef const DPSP_MSG_DELETEPLAYERFROMGROUP* LPCDPSP_MSG_DELETEPLAYERFROMGROUP;
332 typedef const DPSP_MSG_ADDSHORTCUTTOGROUP* LPCDPSP_MSG_ADDSHORTCUTTOGROUP;
333 typedef const DPSP_MSG_DELETEGROUPFROMGROUP* LPCDPSP_MSG_DELETEGROUPFROMGROUP;
336 typedef struct tagDPSP_MSG_PLAYERDATACHANGED
338 DPSP_MSG_ENVELOPE envelope;
339 DPID IDTo;
340 DPID PlayerID;
341 DWORD DataOffset;
342 } DPSP_MSG_PLAYERDATACHANGED, *LPDPSP_MSG_PLAYERDATACHANGED;
343 typedef const DPSP_MSG_PLAYERDATACHANGED* LPCDPSP_MSG_PLAYERDATACHANGED;
346 typedef struct tagDPSP_MSG_PLAYERNAMECHANGED
348 DPSP_MSG_ENVELOPE envelope;
349 DPID IDTo;
350 DPID PlayerID;
351 DWORD ShortOffset;
352 DWORD LongOffset;
353 } DPSP_MSG_PLAYERNAMECHANGED, *LPDPSP_MSG_PLAYERNAMECHANGED;
354 typedef const DPSP_MSG_PLAYERNAMECHANGED* LPCDPSP_MSG_PLAYERNAMECHANGED;
357 typedef struct tagDPSP_MSG_GROUPDATACHANGED
359 DPSP_MSG_ENVELOPE envelope;
360 DPID IDTo;
361 DPID GroupID;
362 DWORD dwDataSize;
363 DWORD dwDataOffset;
364 } DPSP_MSG_GROUPDATACHANGED, *LPDPSP_MSG_GROUPDATACHANGED;
365 typedef const DPSP_MSG_GROUPDATACHANGED* LPCDPSP_MSG_GROUPDATACHANGED;
368 typedef struct tagDPSP_MSG_GROUPNAMECHANGED
370 DPSP_MSG_ENVELOPE envelope;
371 DPID IDTo;
372 DPID GroupID;
373 DWORD ShortOffset;
374 DWORD LongOffset;
375 } DPSP_MSG_GROUPNAMECHANGED, *LPDPSP_MSG_GROUPNAMECHANGED;
376 typedef const DPSP_MSG_GROUPNAMECHANGED* LPCDPSP_MSG_GROUPNAMECHANGED;
379 typedef struct tagDPSP_MSG_ADDFORWARDREQUEST
381 DPSP_MSG_ENVELOPE envelope;
382 DPID IDTo;
383 DPID PlayerID;
384 DPID GroupID;
385 DWORD CreateOffset;
386 DWORD PasswordOffset;
387 } DPSP_MSG_ADDFORWARDREQUEST, *LPDPSP_MSG_ADDFORWARDREQUEST;
388 typedef const DPSP_MSG_ADDFORWARDREQUEST* LPCDPSP_MSG_ADDFORWARDREQUEST;
391 typedef struct tagDPSP_MSG_PACKET
393 DPSP_MSG_ENVELOPE envelope;
394 GUID GuidMessage;
395 DWORD PacketIndex;
396 DWORD DataSize;
397 DWORD Offset;
398 DWORD TotalPackets;
399 DWORD MessageSize;
400 DWORD PackedOffset;
401 } DPSP_MSG_PACKET, *LPDPSP_MSG_PACKET,
402 DPSP_MSG_PACKET2_DATA, *LPDPSP_MSG_PACKET2_DATA;
403 typedef const DPSP_MSG_PACKET* LPCDPSP_MSG_PACKET;
404 typedef const DPSP_MSG_PACKET2_DATA* LPCDPSP_MSG_PACKET2_DATA;
407 typedef struct tagDPSP_MSG_PING
409 DPSP_MSG_ENVELOPE envelope;
410 DPID IDFrom;
411 DWORD TickCount;
412 } DPSP_MSG_PING, *LPDPSP_MSG_PING,
413 DPSP_MSG_PINGREPLY, *LPDPSP_MSG_PINGREPLY;
414 typedef const DPSP_MSG_PING* LPCDPSP_MSG_PING;
415 typedef const DPSP_MSG_PINGREPLY* LPCDPSP_MSG_PINGREPLY;
418 typedef struct tagDPSP_MSG_PLAYERWRAPPER
420 DPSP_MSG_ENVELOPE envelope;
421 DPSP_MSG_PLAYERMESSAGE PlayerMessage;
422 } DPSP_MSG_PLAYERWRAPPER, *LPDPSP_MSG_PLAYERWRAPPER;
423 typedef const DPSP_MSG_PLAYERWRAPPER* LPCDPSP_MSG_PLAYERWRAPPER;
426 typedef struct tagDPSP_MSG_SESSIONDESCCHANGED
428 DPSP_MSG_ENVELOPE envelope;
429 DPID IDTo;
430 DWORD SessionNameOffset;
431 DWORD PasswordOffset;
432 DPSESSIONDESC2 SessionDesc;
433 } DPSP_MSG_SESSIONDESCCHANGED, *LPDPSP_MSG_SESSIONDESCCHANGED;
434 typedef const DPSP_MSG_SESSIONDESCCHANGED* LPCDPSP_MSG_SESSIONDESCCHANGED;
437 typedef struct tagDPSP_MSG_CHALLENGE
439 DPSP_MSG_ENVELOPE envelope;
440 DPID IDFrom;
441 DWORD DataSize;
442 DWORD DataOffset;
443 } DPSP_MSG_CHALLENGE, *LPDPSP_MSG_CHALLENGE;
444 typedef const DPSP_MSG_CHALLENGE* LPCDPSP_MSG_CHALLENGE;
447 typedef struct tagDPSP_MSG_ACCESSGRANTED
449 DPSP_MSG_ENVELOPE envelope;
450 DWORD PublicKeySize;
451 DWORD PublicKeyOffset;
452 } DPSP_MSG_ACCESSGRANTED, *LPDPSP_MSG_ACCESSGRANTED;
453 typedef const DPSP_MSG_ACCESSGRANTED* LPCDPSP_MSG_ACCESSGRANTED;
456 typedef struct tagDPSP_MSG_NEGOTIATE
458 DPSP_MSG_ENVELOPE envelope;
459 DPID IDFrom;
460 DWORD DataSize;
461 DWORD DataOffset;
462 } DPSP_MSG_NEGOTIATE, *LPDPSP_MSG_NEGOTIATE,
463 DPSP_MSG_CHALLENGERESPONSE, *LPDPSP_MSG_CHALLENGERESPONSE;
464 typedef const DPSP_MSG_NEGOTIATE* LPCDPSP_MSG_NEGOTIATE;
465 typedef const DPSP_MSG_CHALLENGERESPONSE* LPCDPSP_MSG_CHALLENGERESPONSE;
468 typedef struct tagDPSP_MSG_SIGNED
470 DPSP_MSG_ENVELOPE envelope;
471 DPID IDFrom;
472 DWORD DataOffset;
473 DWORD DataSize;
474 DWORD SignatureSize;
475 DWORD Flags;
476 } DPSP_MSG_SIGNED, *LPDPSP_MSG_SIGNED;
477 typedef const DPSP_MSG_SIGNED* LPCDPSP_MSG_SIGNED;
479 /* DPSP_MSG_SIGNED->Flags */
480 #define SIGNED_SS 0x00000001
481 #define SIGNED_SC 0x00000002
482 #define SIGNED_EC 0x00000004
485 typedef struct tagDPSP_MSG_ADDFORWARDREPLY
487 DPSP_MSG_ENVELOPE envelope;
488 HRESULT Error;
489 } DPSP_MSG_ADDFORWARDREPLY, *LPDPSP_MSG_ADDFORWARDREPLY,
490 DPSP_MSG_AUTHERROR, *LPDPSP_MSG_AUTHERROR;
491 typedef const DPSP_MSG_ADDFORWARDREPLY* LPCDPSP_MSG_ADDFORWARDREPLY;
492 typedef const DPSP_MSG_AUTHERROR* LPCDPSP_MSG_AUTHERROR;
496 typedef struct tagDPSP_MSG_ASK4MULTICAST
498 DPSP_MSG_ENVELOPE envelope;
499 DPID GroupTo;
500 DPID PlayerFrom;
501 DWORD MessageOffset;
502 } DPSP_MSG_ASK4MULTICAST, *LPDPSP_MSG_ASK4MULTICAST,
503 DPSP_MSG_ASK4MULTICASTGUARANTEED, *LPDPSP_MSG_ASK4MULTICASTGUARANTEED;
504 typedef const DPSP_MSG_ASK4MULTICAST* LPCDPSP_MSG_ASK4MULTICAST;
505 typedef const DPSP_MSG_ASK4MULTICASTGUARANTEED* LPCDPSP_MSG_ASK4MULTICASTGUARANTEED;
508 typedef struct tagDPSP_MSG_KEYEXCHANGE
510 DPSP_MSG_ENVELOPE envelope;
511 DWORD SessionKeyOffset;
512 DWORD PublicKeySize;
513 DWORD PublicKeyOffset;
514 } DPSP_MSG_KEYEXCHANGE, *LPDPSP_MSG_KEYEXCHANGE;
515 typedef const DPSP_MSG_KEYEXCHANGE* LPCDPSP_MSG_KEYEXCHANGE;
518 typedef struct tagDPSP_MSG_KEYEXCHANGEREPLY
520 DPSP_MSG_ENVELOPE envelope;
521 DWORD SessionKeySize;
522 DWORD SessionKeyOffset;
523 DWORD PublicKeyOffset;
524 } DPSP_MSG_KEYEXCHANGEREPLY, *LPDPSP_MSG_KEYEXCHANGEREPLY;
525 typedef const DPSP_MSG_KEYEXCHANGEREPLY* LPCDPSP_MSG_KEYEXCHANGEREPLY;
528 typedef struct tagDPSP_MSG_CHAT
530 DPSP_MSG_ENVELOPE envelope;
531 DPID IDFrom;
532 DPID IDTo;
533 DWORD Flags;
534 DWORD MessageOffset;
535 } DPSP_MSG_CHAT, *LPDPSP_MSG_CHAT;
536 typedef const DPSP_MSG_CHAT* LPCDPSP_MSG_CHAT;
538 /* DPSP_MSG_CHAT->Flags */
539 #define CHAT_GS 0x00000001
542 typedef struct tagDPSP_MSG_ADDFORWARDACK
544 DPSP_MSG_ENVELOPE envelope;
545 DPID ID;
546 } DPSP_MSG_ADDFORWARDACK, *LPDPSP_MSG_ADDFORWARDACK;
547 typedef const DPSP_MSG_ADDFORWARDACK* LPCDPSP_MSG_ADDFORWARDACK;
550 typedef struct tagDPSP_MSG_PACKET2_ACK
552 DPSP_MSG_ENVELOPE envelope;
553 GUID GuidMessage;
554 DPID PacketID;
555 } DPSP_MSG_PACKET2_ACK, *LPDPSP_MSG_PACKET2_ACK;
556 typedef const DPSP_MSG_PACKET2_ACK* LPCDPSP_MSG_PACKET2_ACK;
559 typedef struct tagDPSP_MSG_IAMNAMESERVER
561 DPSP_MSG_ENVELOPE envelope;
562 DPID IDTo;
563 DPID IDHost;
564 DWORD Flags;
565 DWORD SPDataSize;
566 } DPSP_MSG_IAMNAMESERVER, *LPDPSP_MSG_IAMNAMESERVER;
567 typedef const DPSP_MSG_IAMNAMESERVER* LPCDPSP_MSG_IAMNAMESERVER;
570 typedef struct tagDPSP_MSG_VOICE
572 DPSP_MSG_ENVELOPE envelope;
573 DPID dwIDFrom;
574 DPID dwIDTo;
575 } DPSP_MSG_VOICE, *LPDPSP_MSG_VOICE;
576 typedef const DPSP_MSG_VOICE* LPCDPSP_MSG_VOICE;
579 typedef struct tagDPSP_MSG_MULTICASTDELIVERY
581 DPSP_MSG_ENVELOPE envelope;
582 DPID GroupIDTo;
583 DPID PlayerIDFrom;
584 DWORD MessageOffset;
585 } DPSP_MSG_MULTICASTDELIVERY, *LPDPSP_MSG_MULTICASTDELIVERY;
586 typedef const DPSP_MSG_MULTICASTDELIVERY* LPCDPSP_MSG_MULTICASTDELIVERY;
589 #include "poppack.h"
591 #endif