dplayx: Modified reply functions to save also the header of the reply
[wine/gsoc_dplay.git] / dlls / dplayx / dplayx_messages.h
blob014c80748924bb8bf25098f825b45a8b2f910bb3
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 );
38 void DP_MSG_ReplyToEnumPlayersRequest( IDirectPlay2Impl* lpDP, LPVOID* lplpReply,
39 LPDWORD lpdwMsgSize );
41 BOOL DP_MSG_ReplyReceived( IDirectPlay2AImpl* This, WORD wCommandId,
42 LPCVOID lpMsgHdr, LPCVOID lpMsgBody,
43 DWORD dwMsgBodySize );
44 void DP_MSG_ErrorReceived( IDirectPlay2AImpl* This, WORD wCommandId,
45 LPCVOID lpMsgBody, DWORD dwMsgBodySize );
47 /* Timings -> 1000 ticks/sec */
48 #define DPMSG_WAIT_5_SECS 5000
49 #define DPMSG_WAIT_30_SECS 30000
50 #define DPMSG_WAIT_60_SECS 60000
51 #define DPMSG_DEFAULT_WAIT_TIME DPMSG_WAIT_30_SECS
52 #define DPMSG_RELIABLE_API_TIMER 5000
53 #define DPMSG_LOGON_TIMER 25000
54 #define DPMSG_PACKETIZE_BASE_TIMER 900
55 #define DPMSG_PING_TIMER 35000
56 #define DPMSG_NAMETABLE_TIMER 15000
58 /* Message types etc. */
59 #include "pshpack1.h"
62 /* DirectX versions */
63 #define DX6VERSION 9
64 #define DX61VERSION 10
65 #define DX61AVERSION 11
66 #define DX71VERSION 12
67 #define DX8VERSION 13
68 #define DX9VERSION 14
70 /* MAGIC number at the start of all dplay packets ("play" in ASCII) */
71 #define DPMSG_SIGNATURE 0x79616c70
73 typedef struct tagDPLAYI_PACKEDPLAYER
75 DWORD Size;
76 DWORD Flags;
77 DPID PlayerID;
78 DWORD ShortNameLength;
79 DWORD LongNameLength;
80 DWORD ServiceProviderDataSize;
81 DWORD PlayerDataSize;
82 DWORD NumberOfPlayers;
83 DPID SystemPlayerID;
84 DWORD FixedSize;
85 DWORD PlayerVersion;
86 DPID ParentID;
87 } DPLAYI_PACKEDPLAYER, *LPDPLAYI_PACKEDPLAYER;
88 typedef const DPLAYI_PACKEDPLAYER* LPCDPLAYI_PACKEDPLAYER;
91 typedef struct tagDPLAYI_SUPERPACKEDPLAYER
93 DWORD Size;
94 DWORD Flags;
95 DPID ID;
96 DWORD PlayerInfoMask;
97 DWORD VersionOrSystemPlayerID;
98 } DPLAYI_SUPERPACKEDPLAYER, *LPDPLAYI_SUPERPACKEDPLAYER;
99 typedef const DPLAYI_SUPERPACKEDPLAYER* LPCDPLAYI_SUPERPACKEDPLAYER;
101 /* DPLAYI_SUPERPACKEDPLAYER->Flags for PlayerInfoMask */
102 #define SPP_SN 0x00000001
103 #define SPP_LN 0x00000002
104 #define SPP_PI 0x00000100
105 #define SPP_SL_OFFSET 2
106 #define SPP_PD_OFFSET 4
107 #define SPP_PC_OFFSET 6
108 #define SPP_SC_OFFSET 9
110 static inline DWORD spp_get_optimum_size( DWORD value )
112 /* Returns: the minimum size in bytes needed to
113 * allocate the variable. Can be 1, 2 or 4. */
114 if ( value > 0xFFFF )
115 return 4;
116 if ( value > 0xFF )
117 return 2;
118 return 1;
121 static inline DWORD spp_size2flags( DWORD size, DWORD offset )
123 /* Returns: the PlayerInfoMask flags asociated to
124 * the given size in bytes. */
125 if ( size == 4 )
126 size = 3;
127 return size << offset;
130 static inline DWORD spp_flags2size( DWORD flags, DWORD offset )
132 /* Returns: the size in bytes asociated to the
133 * given PlayerInfoMask flags. */
134 DWORD size = ( flags >> offset ) & 0x000000FF;
135 if ( size == 3 )
136 return 4;
137 else
138 return size;
142 /* Messages */
143 #define DPMSGCMD_ENUMSESSIONSREPLY 0x0001
144 #define DPMSGCMD_ENUMSESSIONS 0x0002
145 #define DPMSGCMD_ENUMPLAYERSREPLY 0x0003
146 #define DPMSGCMD_ENUMPLAYER 0x0004
147 #define DPMSGCMD_REQUESTPLAYERID 0x0005
148 #define DPMSGCMD_REQUESTGROUPID 0x0006
149 #define DPMSGCMD_REQUESTPLAYERREPLY 0x0007
150 #define DPMSGCMD_CREATEPLAYER 0x0008
151 #define DPMSGCMD_CREATEGROUP 0x0009
152 #define DPMSGCMD_PLAYERMESSAGE 0x000A
153 #define DPMSGCMD_DELETEPLAYER 0x000B
154 #define DPMSGCMD_DELETEGROUP 0x000C
155 #define DPMSGCMD_ADDPLAYERTOGROUP 0x000D
156 #define DPMSGCMD_DELETEPLAYERFROMGROUP 0x000E
157 #define DPMSGCMD_PLAYERDATACHANGED 0x000F
158 #define DPMSGCMD_PLAYERNAMECHANGED 0x0010
159 #define DPMSGCMD_GROUPDATACHANGED 0x0011
160 #define DPMSGCMD_GROUPNAMECHANGED 0x0012
161 #define DPMSGCMD_ADDFORWARDREQUEST 0x0013
162 #define DPMSGCMD_PACKET 0x0015
163 #define DPMSGCMD_PING 0x0016
164 #define DPMSGCMD_PINGREPLY 0x0017
165 #define DPMSGCMD_YOUAREDEAD 0x0018
166 #define DPMSGCMD_PLAYERWRAPPER 0x0019
167 #define DPMSGCMD_SESSIONDESCCHANGED 0x001A
168 #define DPMSGCMD_CHALLENGE 0x001C
169 #define DPMSGCMD_ACCESSGRANTED 0x001D
170 #define DPMSGCMD_LOGONDENIED 0x001E
171 #define DPMSGCMD_AUTHERROR 0x001F
172 #define DPMSGCMD_NEGOTIATE 0x0020
173 #define DPMSGCMD_CHALLENGERESPONSE 0x0021
174 #define DPMSGCMD_SIGNED 0x0022
175 #define DPMSGCMD_ADDFORWARDREPLY 0x0024
176 #define DPMSGCMD_ASK4MULTICAST 0x0025
177 #define DPMSGCMD_ASK4MULTICASTGUARANTEED 0x0026
178 #define DPMSGCMD_ADDSHORTCUTTOGROUP 0x0027
179 #define DPMSGCMD_DELETEGROUPFROMGROUP 0x0028
180 #define DPMSGCMD_SUPERENUMPLAYERSREPLY 0x0029
181 #define DPMSGCMD_KEYEXCHANGE 0x002B
182 #define DPMSGCMD_KEYEXCHANGEREPLY 0x002C
183 #define DPMSGCMD_CHAT 0x002D
184 #define DPMSGCMD_ADDFORWARD 0x002E
185 #define DPMSGCMD_ADDFORWARDACK 0x002F
186 #define DPMSGCMD_PACKET2_DATA 0x0030
187 #define DPMSGCMD_PACKET2_ACK 0x0031
188 #define DPMSGCMD_IAMNAMESERVER 0x0035
189 #define DPMSGCMD_VOICE 0x0036
190 #define DPMSGCMD_MULTICASTDELIVERY 0x0037
191 #define DPMSGCMD_CREATEPLAYERVERIFY 0x0038
195 typedef struct tagDPSP_MSG_ENVELOPE
197 DWORD dwMagic;
198 WORD wCommandId;
199 WORD wVersion;
200 } DPSP_MSG_ENVELOPE, *LPDPSP_MSG_ENVELOPE;
201 typedef const DPSP_MSG_ENVELOPE* LPCDPSP_MSG_ENVELOPE;
204 typedef struct tagDPSP_MSG_ENUMSESSIONSREPLY
206 DPSP_MSG_ENVELOPE envelope;
207 DPSESSIONDESC2 SessionDescription;
208 DWORD NameOffset;
209 } DPSP_MSG_ENUMSESSIONSREPLY, *LPDPSP_MSG_ENUMSESSIONSREPLY;
210 typedef const DPSP_MSG_ENUMSESSIONSREPLY* LPCDPSP_MSG_ENUMSESSIONSREPLY;
213 typedef struct tagDPSP_MSG_ENUMSESSIONS
215 DPSP_MSG_ENVELOPE envelope;
216 GUID ApplicationGuid;
217 DWORD PasswordOffset;
218 DWORD Flags;
219 } DPSP_MSG_ENUMSESSIONS, *LPDPSP_MSG_ENUMSESSIONS;
220 typedef const DPSP_MSG_ENUMSESSIONS* LPCDPSP_MSG_ENUMSESSIONS;
223 typedef struct tagDPSP_MSG_ENUMPLAYERSREPLY
225 DPSP_MSG_ENVELOPE envelope;
226 DWORD PlayerCount;
227 DWORD GroupCount;
228 DWORD PackedOffset;
229 DWORD ShortcutCount;
230 DWORD DescriptionOffset;
231 DWORD NameOffset;
232 DWORD PasswordOffset;
233 DPSESSIONDESC2 DPSessionDesc;
234 } DPSP_MSG_ENUMPLAYERSREPLY, *LPDPSP_MSG_ENUMPLAYERSREPLY,
235 DPSP_MSG_SUPERENUMPLAYERSREPLY, *LPDPSP_MSG_SUPERENUMPLAYERSREPLY;
236 typedef const DPSP_MSG_ENUMPLAYERSREPLY* LPCDPSP_MSG_ENUMPLAYERSREPLY;
237 typedef const DPSP_MSG_SUPERENUMPLAYERSREPLY* LPCDPSP_MSG_SUPERENUMPLAYERSREPLY;
240 typedef struct tagDPSP_MSG_ENUMPLAYER
242 DPSP_MSG_ENVELOPE envelope;
243 } DPSP_MSG_ENUMPLAYER, *LPDPSP_MSG_ENUMPLAYER,
244 DPSP_MSG_YOUAREDEAD, *LPDPSP_MSG_YOUAREDEAD,
245 DPSP_MSG_LOGONDENIED, *LPDPSP_MSG_LOGONDENIED;
246 typedef const DPSP_MSG_ENUMPLAYER* LPCDPSP_MSG_ENUMPLAYER;
247 typedef const DPSP_MSG_YOUAREDEAD* LPCDPSP_MSG_YOUAREDEAD;
248 typedef const DPSP_MSG_LOGONDENIED* LPCDPSP_MSG_LOGONDENIED;
251 typedef struct tagDPSP_MSG_REQUESTPLAYERID
253 DPSP_MSG_ENVELOPE envelope;
254 DWORD Flags;
255 } DPSP_MSG_REQUESTPLAYERID, *LPDPSP_MSG_REQUESTPLAYERID,
256 DPSP_MSG_REQUESTGROUPID, *LPDPSP_MSG_REQUESTGROUPID;
257 typedef const DPSP_MSG_REQUESTPLAYERID* LPCDPSP_MSG_REQUESTPLAYERID;
258 typedef const DPSP_MSG_REQUESTGROUPID* LPCDPSP_MSG_REQUESTGROUPID;
260 /* DPSP_MSG_REQUESTGROUPID->Flags */
261 #define REQUESTGROUPID_PL 0x00000004
262 #define REQUESTGROUPID_SS 0x00000200
265 typedef struct tagDPSP_MSG_REQUESTPLAYERREPLY
267 DPSP_MSG_ENVELOPE envelope;
268 DPID ID;
269 DPSECURITYDESC SecDesc;
270 DWORD SSPIProviderOffset;
271 DWORD CAPIProviderOffset;
272 HRESULT Result;
273 } DPSP_MSG_REQUESTPLAYERREPLY, *LPDPSP_MSG_REQUESTPLAYERREPLY;
274 typedef const DPSP_MSG_REQUESTPLAYERREPLY* LPCDPSP_MSG_REQUESTPLAYERREPLY;
277 typedef struct tagDPSP_MSG_ADDFORWARD
279 DPSP_MSG_ENVELOPE envelope;
280 DPID IDTo;
281 DPID PlayerID;
282 DPID GroupID;
283 DWORD CreateOffset;
284 DWORD PasswordOffset;
285 } DPSP_MSG_CREATEPLAYER, *LPDPSP_MSG_CREATEPLAYER,
286 DPSP_MSG_ADDFORWARD, *LPDPSP_MSG_ADDFORWARD,
287 DPSP_MSG_CREATEPLAYERVERIFY, *LPDPSP_MSG_CREATEPLAYERVERIFY,
288 DPSP_MSG_CREATEGROUP, *LPDPSP_MSG_CREATEGROUP;
289 typedef const DPSP_MSG_CREATEPLAYER* LPCDPSP_MSG_CREATEPLAYER;
290 typedef const DPSP_MSG_ADDFORWARD* LPCDPSP_MSG_ADDFORWARD;
291 typedef const DPSP_MSG_CREATEPLAYERVERIFY* LPCDPSP_MSG_CREATEPLAYERVERIFY;
292 typedef const DPSP_MSG_CREATEGROUP* LPCDPSP_MSG_CREATEGROUP;
295 typedef struct tagDPSP_MSG_PLAYERMESSAGE
297 DPSP_MSG_ENVELOPE envelope;
298 DWORD size; /* size & 0x000FFFFF, token & 0xFFF00000 */
299 SOCKADDR_IN sockaddr;
300 DPID idFrom;
301 DPID idTo;
302 } DPSP_MSG_PLAYERMESSAGE, *LPDPSP_MSG_PLAYERMESSAGE;
303 typedef const DPSP_MSG_PLAYERMESSAGE* LPCDPSP_MSG_PLAYERMESSAGE;
306 typedef struct tagDPSP_MSG_DELETEPLAYER
308 DPSP_MSG_ENVELOPE envelope;
309 DPID IDTo;
310 DPID PlayerID;
311 /* "GroupID" in ADDSHORTCUTTOGROUP and DELETEGROUPFROMGROUP */
312 DPID ChildGroupID;
313 /* "ParentGroupID" in ADDSHORTCUTTOGROUP and DELETEGROUPFROMGROUP */
314 DWORD CreateOffset;
315 DWORD PasswordOffset;
316 } DPSP_MSG_DELETEPLAYER, *LPDPSP_MSG_DELETEPLAYER,
317 DPSP_MSG_DELETEGROUP, *LPDPSP_MSG_DELETEGROUP,
318 DPSP_MSG_ADDPLAYERTOGROUP, *LPDPSP_MSG_ADDPLAYERTOGROUP,
319 DPSP_MSG_DELETEPLAYERFROMGROUP, *LPDPSP_MSG_DELETEPLAYERFROMGROUP,
320 DPSP_MSG_ADDSHORTCUTTOGROUP, *LPDPSP_MSG_ADDSHORTCUTTOGROUP,
321 DPSP_MSG_DELETEGROUPFROMGROUP, *LPDPSP_MSG_DELETEGROUPFROMGROUP;
322 typedef const DPSP_MSG_DELETEPLAYER* LPCDPSP_MSG_DELETEPLAYER;
323 typedef const DPSP_MSG_DELETEGROUP* LPCDPSP_MSG_DELETEGROUP;
324 typedef const DPSP_MSG_ADDPLAYERTOGROUP* LPCDPSP_MSG_ADDPLAYERTOGROUP;
325 typedef const DPSP_MSG_DELETEPLAYERFROMGROUP* LPCDPSP_MSG_DELETEPLAYERFROMGROUP;
326 typedef const DPSP_MSG_ADDSHORTCUTTOGROUP* LPCDPSP_MSG_ADDSHORTCUTTOGROUP;
327 typedef const DPSP_MSG_DELETEGROUPFROMGROUP* LPCDPSP_MSG_DELETEGROUPFROMGROUP;
330 typedef struct tagDPSP_MSG_PLAYERDATACHANGED
332 DPSP_MSG_ENVELOPE envelope;
333 DPID IDTo;
334 DPID PlayerID;
335 DWORD DataOffset;
336 } DPSP_MSG_PLAYERDATACHANGED, *LPDPSP_MSG_PLAYERDATACHANGED;
337 typedef const DPSP_MSG_PLAYERDATACHANGED* LPCDPSP_MSG_PLAYERDATACHANGED;
340 typedef struct tagDPSP_MSG_PLAYERNAMECHANGED
342 DPSP_MSG_ENVELOPE envelope;
343 DPID IDTo;
344 DPID PlayerID;
345 DWORD ShortOffset;
346 DWORD LongOffset;
347 } DPSP_MSG_PLAYERNAMECHANGED, *LPDPSP_MSG_PLAYERNAMECHANGED;
348 typedef const DPSP_MSG_PLAYERNAMECHANGED* LPCDPSP_MSG_PLAYERNAMECHANGED;
351 typedef struct tagDPSP_MSG_GROUPDATACHANGED
353 DPSP_MSG_ENVELOPE envelope;
354 DPID IDTo;
355 DPID GroupID;
356 DWORD dwDataSize;
357 DWORD dwDataOffset;
358 } DPSP_MSG_GROUPDATACHANGED, *LPDPSP_MSG_GROUPDATACHANGED;
359 typedef const DPSP_MSG_GROUPDATACHANGED* LPCDPSP_MSG_GROUPDATACHANGED;
362 typedef struct tagDPSP_MSG_GROUPNAMECHANGED
364 DPSP_MSG_ENVELOPE envelope;
365 DPID IDTo;
366 DPID GroupID;
367 DWORD ShortOffset;
368 DWORD LongOffset;
369 } DPSP_MSG_GROUPNAMECHANGED, *LPDPSP_MSG_GROUPNAMECHANGED;
370 typedef const DPSP_MSG_GROUPNAMECHANGED* LPCDPSP_MSG_GROUPNAMECHANGED;
373 typedef struct tagDPSP_MSG_ADDFORWARDREQUEST
375 DPSP_MSG_ENVELOPE envelope;
376 DPID IDTo;
377 DPID PlayerID;
378 DPID GroupID;
379 DWORD CreateOffset;
380 DWORD PasswordOffset;
381 } DPSP_MSG_ADDFORWARDREQUEST, *LPDPSP_MSG_ADDFORWARDREQUEST;
382 typedef const DPSP_MSG_ADDFORWARDREQUEST* LPCDPSP_MSG_ADDFORWARDREQUEST;
385 typedef struct tagDPSP_MSG_PACKET
387 DPSP_MSG_ENVELOPE envelope;
388 GUID GuidMessage;
389 DWORD PacketIndex;
390 DWORD DataSize;
391 DWORD Offset;
392 DWORD TotalPackets;
393 DWORD MessageSize;
394 DWORD PackedOffset;
395 } DPSP_MSG_PACKET, *LPDPSP_MSG_PACKET,
396 DPSP_MSG_PACKET2_DATA, *LPDPSP_MSG_PACKET2_DATA;
397 typedef const DPSP_MSG_PACKET* LPCDPSP_MSG_PACKET;
398 typedef const DPSP_MSG_PACKET2_DATA* LPCDPSP_MSG_PACKET2_DATA;
401 typedef struct tagDPSP_MSG_PING
403 DPSP_MSG_ENVELOPE envelope;
404 DPID IDFrom;
405 DWORD TickCount;
406 } DPSP_MSG_PING, *LPDPSP_MSG_PING,
407 DPSP_MSG_PINGREPLY, *LPDPSP_MSG_PINGREPLY;
408 typedef const DPSP_MSG_PING* LPCDPSP_MSG_PING;
409 typedef const DPSP_MSG_PINGREPLY* LPCDPSP_MSG_PINGREPLY;
412 typedef struct tagDPSP_MSG_PLAYERWRAPPER
414 DPSP_MSG_ENVELOPE envelope;
415 DPSP_MSG_PLAYERMESSAGE PlayerMessage;
416 } DPSP_MSG_PLAYERWRAPPER, *LPDPSP_MSG_PLAYERWRAPPER;
417 typedef const DPSP_MSG_PLAYERWRAPPER* LPCDPSP_MSG_PLAYERWRAPPER;
420 typedef struct tagDPSP_MSG_SESSIONDESCCHANGED
422 DPSP_MSG_ENVELOPE envelope;
423 DPID IDTo;
424 DWORD SessionNameOffset;
425 DWORD PasswordOffset;
426 DPSESSIONDESC2 SessionDesc;
427 } DPSP_MSG_SESSIONDESCCHANGED, *LPDPSP_MSG_SESSIONDESCCHANGED;
428 typedef const DPSP_MSG_SESSIONDESCCHANGED* LPCDPSP_MSG_SESSIONDESCCHANGED;
431 typedef struct tagDPSP_MSG_CHALLENGE
433 DPSP_MSG_ENVELOPE envelope;
434 DPID IDFrom;
435 DWORD DataSize;
436 DWORD DataOffset;
437 } DPSP_MSG_CHALLENGE, *LPDPSP_MSG_CHALLENGE;
438 typedef const DPSP_MSG_CHALLENGE* LPCDPSP_MSG_CHALLENGE;
441 typedef struct tagDPSP_MSG_ACCESSGRANTED
443 DPSP_MSG_ENVELOPE envelope;
444 DWORD PublicKeySize;
445 DWORD PublicKeyOffset;
446 } DPSP_MSG_ACCESSGRANTED, *LPDPSP_MSG_ACCESSGRANTED;
447 typedef const DPSP_MSG_ACCESSGRANTED* LPCDPSP_MSG_ACCESSGRANTED;
450 typedef struct tagDPSP_MSG_NEGOTIATE
452 DPSP_MSG_ENVELOPE envelope;
453 DPID IDFrom;
454 DWORD DataSize;
455 DWORD DataOffset;
456 } DPSP_MSG_NEGOTIATE, *LPDPSP_MSG_NEGOTIATE,
457 DPSP_MSG_CHALLENGERESPONSE, *LPDPSP_MSG_CHALLENGERESPONSE;
458 typedef const DPSP_MSG_NEGOTIATE* LPCDPSP_MSG_NEGOTIATE;
459 typedef const DPSP_MSG_CHALLENGERESPONSE* LPCDPSP_MSG_CHALLENGERESPONSE;
462 typedef struct tagDPSP_MSG_SIGNED
464 DPSP_MSG_ENVELOPE envelope;
465 DPID IDFrom;
466 DWORD DataOffset;
467 DWORD DataSize;
468 DWORD SignatureSize;
469 DWORD Flags;
470 } DPSP_MSG_SIGNED, *LPDPSP_MSG_SIGNED;
471 typedef const DPSP_MSG_SIGNED* LPCDPSP_MSG_SIGNED;
473 /* DPSP_MSG_SIGNED->Flags */
474 #define SIGNED_SS 0x00000001
475 #define SIGNED_SC 0x00000002
476 #define SIGNED_EC 0x00000004
479 typedef struct tagDPSP_MSG_ADDFORWARDREPLY
481 DPSP_MSG_ENVELOPE envelope;
482 HRESULT Error;
483 } DPSP_MSG_ADDFORWARDREPLY, *LPDPSP_MSG_ADDFORWARDREPLY,
484 DPSP_MSG_AUTHERROR, *LPDPSP_MSG_AUTHERROR;
485 typedef const DPSP_MSG_ADDFORWARDREPLY* LPCDPSP_MSG_ADDFORWARDREPLY;
486 typedef const DPSP_MSG_AUTHERROR* LPCDPSP_MSG_AUTHERROR;
490 typedef struct tagDPSP_MSG_ASK4MULTICAST
492 DPSP_MSG_ENVELOPE envelope;
493 DPID GroupTo;
494 DPID PlayerFrom;
495 DWORD MessageOffset;
496 } DPSP_MSG_ASK4MULTICAST, *LPDPSP_MSG_ASK4MULTICAST,
497 DPSP_MSG_ASK4MULTICASTGUARANTEED, *LPDPSP_MSG_ASK4MULTICASTGUARANTEED;
498 typedef const DPSP_MSG_ASK4MULTICAST* LPCDPSP_MSG_ASK4MULTICAST;
499 typedef const DPSP_MSG_ASK4MULTICASTGUARANTEED* LPCDPSP_MSG_ASK4MULTICASTGUARANTEED;
502 typedef struct tagDPSP_MSG_KEYEXCHANGE
504 DPSP_MSG_ENVELOPE envelope;
505 DWORD SessionKeyOffset;
506 DWORD PublicKeySize;
507 DWORD PublicKeyOffset;
508 } DPSP_MSG_KEYEXCHANGE, *LPDPSP_MSG_KEYEXCHANGE;
509 typedef const DPSP_MSG_KEYEXCHANGE* LPCDPSP_MSG_KEYEXCHANGE;
512 typedef struct tagDPSP_MSG_KEYEXCHANGEREPLY
514 DPSP_MSG_ENVELOPE envelope;
515 DWORD SessionKeySize;
516 DWORD SessionKeyOffset;
517 DWORD PublicKeyOffset;
518 } DPSP_MSG_KEYEXCHANGEREPLY, *LPDPSP_MSG_KEYEXCHANGEREPLY;
519 typedef const DPSP_MSG_KEYEXCHANGEREPLY* LPCDPSP_MSG_KEYEXCHANGEREPLY;
522 typedef struct tagDPSP_MSG_CHAT
524 DPSP_MSG_ENVELOPE envelope;
525 DPID IDFrom;
526 DPID IDTo;
527 DWORD Flags;
528 DWORD MessageOffset;
529 } DPSP_MSG_CHAT, *LPDPSP_MSG_CHAT;
530 typedef const DPSP_MSG_CHAT* LPCDPSP_MSG_CHAT;
532 /* DPSP_MSG_CHAT->Flags */
533 #define CHAT_GS 0x00000001
536 typedef struct tagDPSP_MSG_ADDFORWARDACK
538 DPSP_MSG_ENVELOPE envelope;
539 DPID ID;
540 } DPSP_MSG_ADDFORWARDACK, *LPDPSP_MSG_ADDFORWARDACK;
541 typedef const DPSP_MSG_ADDFORWARDACK* LPCDPSP_MSG_ADDFORWARDACK;
544 typedef struct tagDPSP_MSG_PACKET2_ACK
546 DPSP_MSG_ENVELOPE envelope;
547 GUID GuidMessage;
548 DPID PacketID;
549 } DPSP_MSG_PACKET2_ACK, *LPDPSP_MSG_PACKET2_ACK;
550 typedef const DPSP_MSG_PACKET2_ACK* LPCDPSP_MSG_PACKET2_ACK;
553 typedef struct tagDPSP_MSG_IAMNAMESERVER
555 DPSP_MSG_ENVELOPE envelope;
556 DPID IDTo;
557 DPID IDHost;
558 DWORD Flags;
559 DWORD SPDataSize;
560 } DPSP_MSG_IAMNAMESERVER, *LPDPSP_MSG_IAMNAMESERVER;
561 typedef const DPSP_MSG_IAMNAMESERVER* LPCDPSP_MSG_IAMNAMESERVER;
564 typedef struct tagDPSP_MSG_VOICE
566 DPSP_MSG_ENVELOPE envelope;
567 DPID dwIDFrom;
568 DPID dwIDTo;
569 } DPSP_MSG_VOICE, *LPDPSP_MSG_VOICE;
570 typedef const DPSP_MSG_VOICE* LPCDPSP_MSG_VOICE;
573 typedef struct tagDPSP_MSG_MULTICASTDELIVERY
575 DPSP_MSG_ENVELOPE envelope;
576 DPID GroupIDTo;
577 DPID PlayerIDFrom;
578 DWORD MessageOffset;
579 } DPSP_MSG_MULTICASTDELIVERY, *LPDPSP_MSG_MULTICASTDELIVERY;
580 typedef const DPSP_MSG_MULTICASTDELIVERY* LPCDPSP_MSG_MULTICASTDELIVERY;
583 #include "poppack.h"
585 #endif