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