ReactOS 0.4.15-dev-7953-g1f49173
dplayx_messages.h File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "dplay.h"
#include "rpc.h"
#include "dplay_global.h"
#include "pshpack1.h"
#include "poppack.h"
Include dependency graph for dplayx_messages.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tagDPMSG_SENDENVELOPE
 
struct  tagDPMSG_SYSMSGENVELOPE
 
struct  tagDPMSG_ENUMSESSIONSREPLY
 
struct  tagDPMSG_ENUMSESSIONSREQUEST
 
struct  tagDPMSG_CREATESESSION
 
struct  tagDPMSG_REQUESTNEWPLAYERID
 
struct  tagDPMSG_NEWPLAYERIDREPLY
 
struct  tagDPMSG_FORWARDADDPLAYER
 
struct  tagDPMSG_FORWARDADDPLAYERNACK
 

Macros

#define DPMSG_WAIT_5_SECS   5000
 
#define DPMSG_WAIT_30_SECS   30000
 
#define DPMSG_WAIT_60_SECS   60000
 
#define DPMSG_DEFAULT_WAIT_TIME   DPMSG_WAIT_30_SECS
 
#define DPMSGCMD_ENUMSESSIONSREPLY   1
 
#define DPMSGCMD_ENUMSESSIONSREQUEST   2
 
#define DPMSGCMD_GETNAMETABLEREPLY   3 /* Contains all existing players in session */
 
#define DPMSGCMD_REQUESTNEWPLAYERID   5
 
#define DPMSGCMD_NEWPLAYERIDREPLY   7
 
#define DPMSGCMD_CREATESESSION   8 /* Might be a create nameserver or new player msg */
 
#define DPMSGCMD_CREATENEWPLAYER   9
 
#define DPMSGCMD_SYSTEMMESSAGE   10
 
#define DPMSGCMD_DELETEPLAYER   11
 
#define DPMSGCMD_DELETEGROUP   12
 
#define DPMSGCMD_ENUMGROUPS   17
 
#define DPMSGCMD_FORWARDADDPLAYER   19
 
#define DPMSGCMD_PLAYERCHAT   22
 
#define DPMSGCMD_FORWARDADDPLAYERNACK   36
 
#define DPMSGCMD_JUSTENVELOPE   1000
 
#define DPMSGCMD_JUSTENVELOPEREPLY   1001
 
#define DPMSGVER_DP6   11
 
#define DPMSGMAGIC_DPLAYMSG   0x79616c70
 
#define FORWARDADDPLAYER_UNKNOWN4_INIT   { 0x30, 0xb, 0x0, 0x1e090002, 0x0, 0x0, 0x0, 0x32090002, 0x0, 0x0, 0x0, 0x0 }
 

Typedefs

typedef struct tagDPMSG_SENDENVELOPE DPMSG_SENDENVELOPE
 
typedef struct tagDPMSG_SENDENVELOPELPDPMSG_SENDENVELOPE
 
typedef const DPMSG_SENDENVELOPELPCDPMSG_SENDENVELOPE
 
typedef struct tagDPMSG_SYSMSGENVELOPE DPMSG_SYSMSGENVELOPE
 
typedef struct tagDPMSG_SYSMSGENVELOPELPDPMSG_SYSMSGENVELOPE
 
typedef const DPMSG_SYSMSGENVELOPELPCDPMSG_SYSMSGENVELOPE
 
typedef struct tagDPMSG_ENUMSESSIONSREPLY DPMSG_ENUMSESSIONSREPLY
 
typedef struct tagDPMSG_ENUMSESSIONSREPLYLPDPMSG_ENUMSESSIONSREPLY
 
typedef const DPMSG_ENUMSESSIONSREPLYLPCDPMSG_ENUMSESSIONSREPLY
 
typedef struct tagDPMSG_ENUMSESSIONSREQUEST DPMSG_ENUMSESSIONSREQUEST
 
typedef struct tagDPMSG_ENUMSESSIONSREQUESTLPDPMSG_ENUMSESSIONSREQUEST
 
typedef const DPMSG_ENUMSESSIONSREQUESTLPCDPMSG_ENUMSESSIONSREQUEST
 
typedef struct tagDPMSG_CREATESESSION DPMSG_CREATESESSION
 
typedef struct tagDPMSG_CREATESESSIONLPDPMSG_CREATESESSION
 
typedef const DPMSG_CREATESESSIONLPCDPMSG_CREATESESSION
 
typedef struct tagDPMSG_REQUESTNEWPLAYERID DPMSG_REQUESTNEWPLAYERID
 
typedef struct tagDPMSG_REQUESTNEWPLAYERIDLPDPMSG_REQUESTNEWPLAYERID
 
typedef const DPMSG_REQUESTNEWPLAYERIDLPCDPMSG_REQUESTNEWPLAYERID
 
typedef struct tagDPMSG_NEWPLAYERIDREPLY DPMSG_NEWPLAYERIDREPLY
 
typedef struct tagDPMSG_NEWPLAYERIDREPLYLPDPMSG_NEWPLAYERIDREPLY
 
typedef const DPMSG_NEWPLAYERIDREPLYLPCDPMSG_NEWPLAYERIDREPLY
 
typedef struct tagDPMSG_FORWARDADDPLAYER DPMSG_FORWARDADDPLAYER
 
typedef struct tagDPMSG_FORWARDADDPLAYERLPDPMSG_FORWARDADDPLAYER
 
typedef const DPMSG_FORWARDADDPLAYERLPCDPMSG_FORWARDADDPLAYER
 
typedef struct tagDPMSG_FORWARDADDPLAYERNACK DPMSG_FORWARDADDPLAYERNACK
 
typedef struct tagDPMSG_FORWARDADDPLAYERNACKLPDPMSG_FORWARDADDPLAYERNACK
 
typedef const DPMSG_FORWARDADDPLAYERNACKLPCDPMSG_FORWARDADDPLAYERNACK
 

Functions

DWORD CreateLobbyMessageReceptionThread (HANDLE hNotifyEvent, HANDLE hStart, HANDLE hDeath, HANDLE hConnRead) DECLSPEC_HIDDEN
 
HRESULT DP_MSG_SendRequestPlayerId (IDirectPlayImpl *This, DWORD dwFlags, LPDPID lpdipidAllocatedId) DECLSPEC_HIDDEN
 
HRESULT DP_MSG_ForwardPlayerCreation (IDirectPlayImpl *This, DPID dpidServer) DECLSPEC_HIDDEN
 
void DP_MSG_ReplyReceived (IDirectPlayImpl *This, WORD wCommandId, LPCVOID lpMsgBody, DWORD dwMsgBodySize) DECLSPEC_HIDDEN
 
void DP_MSG_ErrorReceived (IDirectPlayImpl *This, WORD wCommandId, LPCVOID lpMsgBody, DWORD dwMsgBodySize) DECLSPEC_HIDDEN
 
void DP_MSG_ToSelf (IDirectPlayImpl *This, DPID dpidSelf) DECLSPEC_HIDDEN
 

Macro Definition Documentation

◆ DPMSG_DEFAULT_WAIT_TIME

#define DPMSG_DEFAULT_WAIT_TIME   DPMSG_WAIT_30_SECS

Definition at line 48 of file dplayx_messages.h.

◆ DPMSG_WAIT_30_SECS

#define DPMSG_WAIT_30_SECS   30000

Definition at line 46 of file dplayx_messages.h.

◆ DPMSG_WAIT_5_SECS

#define DPMSG_WAIT_5_SECS   5000

Definition at line 45 of file dplayx_messages.h.

◆ DPMSG_WAIT_60_SECS

#define DPMSG_WAIT_60_SECS   60000

Definition at line 47 of file dplayx_messages.h.

◆ DPMSGCMD_CREATENEWPLAYER

#define DPMSGCMD_CREATENEWPLAYER   9

Definition at line 62 of file dplayx_messages.h.

◆ DPMSGCMD_CREATESESSION

#define DPMSGCMD_CREATESESSION   8 /* Might be a create nameserver or new player msg */

Definition at line 61 of file dplayx_messages.h.

◆ DPMSGCMD_DELETEGROUP

#define DPMSGCMD_DELETEGROUP   12

Definition at line 65 of file dplayx_messages.h.

◆ DPMSGCMD_DELETEPLAYER

#define DPMSGCMD_DELETEPLAYER   11

Definition at line 64 of file dplayx_messages.h.

◆ DPMSGCMD_ENUMGROUPS

#define DPMSGCMD_ENUMGROUPS   17

Definition at line 67 of file dplayx_messages.h.

◆ DPMSGCMD_ENUMSESSIONSREPLY

#define DPMSGCMD_ENUMSESSIONSREPLY   1

Definition at line 54 of file dplayx_messages.h.

◆ DPMSGCMD_ENUMSESSIONSREQUEST

#define DPMSGCMD_ENUMSESSIONSREQUEST   2

Definition at line 55 of file dplayx_messages.h.

◆ DPMSGCMD_FORWARDADDPLAYER

#define DPMSGCMD_FORWARDADDPLAYER   19

Definition at line 69 of file dplayx_messages.h.

◆ DPMSGCMD_FORWARDADDPLAYERNACK

#define DPMSGCMD_FORWARDADDPLAYERNACK   36

Definition at line 73 of file dplayx_messages.h.

◆ DPMSGCMD_GETNAMETABLEREPLY

#define DPMSGCMD_GETNAMETABLEREPLY   3 /* Contains all existing players in session */

Definition at line 56 of file dplayx_messages.h.

◆ DPMSGCMD_JUSTENVELOPE

#define DPMSGCMD_JUSTENVELOPE   1000

Definition at line 75 of file dplayx_messages.h.

◆ DPMSGCMD_JUSTENVELOPEREPLY

#define DPMSGCMD_JUSTENVELOPEREPLY   1001

Definition at line 76 of file dplayx_messages.h.

◆ DPMSGCMD_NEWPLAYERIDREPLY

#define DPMSGCMD_NEWPLAYERIDREPLY   7

Definition at line 60 of file dplayx_messages.h.

◆ DPMSGCMD_PLAYERCHAT

#define DPMSGCMD_PLAYERCHAT   22

Definition at line 71 of file dplayx_messages.h.

◆ DPMSGCMD_REQUESTNEWPLAYERID

#define DPMSGCMD_REQUESTNEWPLAYERID   5

Definition at line 58 of file dplayx_messages.h.

◆ DPMSGCMD_SYSTEMMESSAGE

#define DPMSGCMD_SYSTEMMESSAGE   10

Definition at line 63 of file dplayx_messages.h.

◆ DPMSGMAGIC_DPLAYMSG

#define DPMSGMAGIC_DPLAYMSG   0x79616c70

Definition at line 84 of file dplayx_messages.h.

◆ DPMSGVER_DP6

#define DPMSGVER_DP6   11

Definition at line 81 of file dplayx_messages.h.

◆ FORWARDADDPLAYER_UNKNOWN4_INIT

#define FORWARDADDPLAYER_UNKNOWN4_INIT   { 0x30, 0xb, 0x0, 0x1e090002, 0x0, 0x0, 0x0, 0x32090002, 0x0, 0x0, 0x0, 0x0 }

Definition at line 204 of file dplayx_messages.h.

Typedef Documentation

◆ DPMSG_CREATESESSION

◆ DPMSG_ENUMSESSIONSREPLY

◆ DPMSG_ENUMSESSIONSREQUEST

◆ DPMSG_FORWARDADDPLAYER

◆ DPMSG_FORWARDADDPLAYERNACK

◆ DPMSG_NEWPLAYERIDREPLY

◆ DPMSG_REQUESTNEWPLAYERID

◆ DPMSG_SENDENVELOPE

◆ DPMSG_SYSMSGENVELOPE

◆ LPCDPMSG_CREATESESSION

◆ LPCDPMSG_ENUMSESSIONSREPLY

◆ LPCDPMSG_ENUMSESSIONSREQUEST

◆ LPCDPMSG_FORWARDADDPLAYER

◆ LPCDPMSG_FORWARDADDPLAYERNACK

◆ LPCDPMSG_NEWPLAYERIDREPLY

◆ LPCDPMSG_REQUESTNEWPLAYERID

◆ LPCDPMSG_SENDENVELOPE

Definition at line 96 of file dplayx_messages.h.

◆ LPCDPMSG_SYSMSGENVELOPE

◆ LPDPMSG_CREATESESSION

◆ LPDPMSG_ENUMSESSIONSREPLY

◆ LPDPMSG_ENUMSESSIONSREQUEST

◆ LPDPMSG_FORWARDADDPLAYER

◆ LPDPMSG_FORWARDADDPLAYERNACK

◆ LPDPMSG_NEWPLAYERIDREPLY

◆ LPDPMSG_REQUESTNEWPLAYERID

◆ LPDPMSG_SENDENVELOPE

◆ LPDPMSG_SYSMSGENVELOPE

Function Documentation

◆ CreateLobbyMessageReceptionThread()

DWORD CreateLobbyMessageReceptionThread ( HANDLE  hNotifyEvent,
HANDLE  hStart,
HANDLE  hDeath,
HANDLE  hConnRead 
)

Definition at line 55 of file dplayx_messages.c.

57{
58 DWORD dwMsgThreadId;
59 LPMSGTHREADINFO lpThreadInfo;
61
62 lpThreadInfo = HeapAlloc( GetProcessHeap(), 0, sizeof( *lpThreadInfo ) );
63 if( lpThreadInfo == NULL )
64 {
65 return 0;
66 }
67
68 /* The notify event may or may not exist. Depends if async comm or not */
69 if( hNotifyEvent &&
70 !DuplicateHandle( GetCurrentProcess(), hNotifyEvent,
71 GetCurrentProcess(), &lpThreadInfo->hNotifyEvent,
73 {
74 ERR( "Unable to duplicate event handle\n" );
75 goto error;
76 }
77
78 /* These 3 handles don't need to be duplicated because we don't keep a
79 * reference to them where they're created. They're created specifically
80 * for the message thread
81 */
82 lpThreadInfo->hStart = hStart;
83 lpThreadInfo->hDeath = hDeath;
84 lpThreadInfo->hSettingRead = hConnRead;
85
86 hThread = CreateThread( NULL, /* Security attribs */
87 0, /* Stack */
88 DPL_MSG_ThreadMain, /* Msg reception function */
89 lpThreadInfo, /* Msg reception func parameter */
90 0, /* Flags */
91 &dwMsgThreadId /* Updated with thread id */
92 );
93 if ( hThread == NULL )
94 {
95 ERR( "Unable to create msg thread\n" );
96 goto error;
97 }
98
100
101 return dwMsgThreadId;
102
103error:
104
105 HeapFree( GetProcessHeap(), 0, lpThreadInfo );
106
107 return 0;
108}
#define ERR(fmt,...)
Definition: debug.h:110
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define GetCurrentProcess()
Definition: compat.h:759
#define HeapFree(x, y, z)
Definition: compat.h:735
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
Definition: handle.c:149
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
static DWORD CALLBACK DPL_MSG_ThreadMain(LPVOID lpContext)
unsigned long DWORD
Definition: ntddk_ex.h:95
#define error(str)
Definition: mkdosfs.c:1605
HANDLE hThread
Definition: wizard.c:28
#define DUPLICATE_SAME_ACCESS

Referenced by IDirectPlayLobby3AImpl_RunApplication().

◆ DP_MSG_ErrorReceived()

void DP_MSG_ErrorReceived ( IDirectPlayImpl This,
WORD  wCommandId,
LPCVOID  lpMsgBody,
DWORD  dwMsgBodySize 
)

◆ DP_MSG_ForwardPlayerCreation()

HRESULT DP_MSG_ForwardPlayerCreation ( IDirectPlayImpl This,
DPID  dpidServer 
)

Definition at line 250 of file dplayx_messages.c.

251{
252 LPVOID lpMsg;
253 LPDPMSG_FORWARDADDPLAYER lpMsgBody;
254 DWORD dwMsgSize;
255 HRESULT hr = DP_OK;
256
257 dwMsgSize = This->dp2->spData.dwSPHeaderSize + sizeof( *lpMsgBody );
258
259 lpMsg = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, dwMsgSize );
260
261 lpMsgBody = (LPDPMSG_FORWARDADDPLAYER)( (BYTE*)lpMsg +
262 This->dp2->spData.dwSPHeaderSize );
263
264 /* Compose dplay message envelope */
267 lpMsgBody->envelope.wVersion = DPMSGVER_DP6;
268
269#if 0
270 {
271 LPBYTE lpPData;
272 DWORD dwDataSize;
273
274 /* SP Player remote data needs to be propagated at some point - is this the point? */
275 IDirectPlaySP_GetSPPlayerData( This->dp2->spData.lpISP, 0, &lpPData, &dwDataSize, DPSET_REMOTE );
276
277 ERR( "Player Data size is 0x%08lx\n"
278 "[%02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x]\n"
279 "[%02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x]\n",
280
281 dwDataSize,
282 lpPData[0], lpPData[1], lpPData[2], lpPData[3], lpPData[4],
283 lpPData[5], lpPData[6], lpPData[7], lpPData[8], lpPData[9],
284 lpPData[10], lpPData[11], lpPData[12], lpPData[13], lpPData[14],
285 lpPData[15], lpPData[16], lpPData[17], lpPData[18], lpPData[19],
286 lpPData[20], lpPData[21], lpPData[22], lpPData[23], lpPData[24],
287 lpPData[25], lpPData[26], lpPData[27], lpPData[28], lpPData[29],
288 lpPData[30], lpPData[31]
289 );
290 DebugBreak();
291 }
292#endif
293
294 /* Compose body of message */
295 lpMsgBody->dpidAppServer = dpidServer;
296 lpMsgBody->unknown2[0] = 0x0;
297 lpMsgBody->unknown2[1] = 0x1c;
298 lpMsgBody->unknown2[2] = 0x6c;
299 lpMsgBody->unknown2[3] = 0x50;
300 lpMsgBody->unknown2[4] = 0x9;
301
302 lpMsgBody->dpidAppServer2 = dpidServer;
303 lpMsgBody->unknown3[0] = 0x0;
304 lpMsgBody->unknown3[1] = 0x0;
305 lpMsgBody->unknown3[2] = 0x20;
306 lpMsgBody->unknown3[3] = 0x0;
307 lpMsgBody->unknown3[4] = 0x0;
308
309 lpMsgBody->dpidAppServer3 = dpidServer;
310 lpMsgBody->unknown4[0] = 0x30;
311 lpMsgBody->unknown4[1] = 0xb;
312 lpMsgBody->unknown4[2] = 0x0;
313
314 lpMsgBody->unknown4[3] = NS_GetNsMagic( This->dp2->lpNameServerData ) -
315 0x02000000;
316 TRACE( "Setting first magic to 0x%08x\n", lpMsgBody->unknown4[3] );
317
318 lpMsgBody->unknown4[4] = 0x0;
319 lpMsgBody->unknown4[5] = 0x0;
320 lpMsgBody->unknown4[6] = 0x0;
321
322 lpMsgBody->unknown4[7] = NS_GetNsMagic( This->dp2->lpNameServerData );
323 TRACE( "Setting second magic to 0x%08x\n", lpMsgBody->unknown4[7] );
324
325 lpMsgBody->unknown4[8] = 0x0;
326 lpMsgBody->unknown4[9] = 0x0;
327 lpMsgBody->unknown4[10] = 0x0;
328 lpMsgBody->unknown4[11] = 0x0;
329
330 lpMsgBody->unknown5[0] = 0x0;
331 lpMsgBody->unknown5[1] = 0x0;
332
333 /* Send the message */
334 {
336
337 data.dwFlags = DPSEND_GUARANTEED;
338 data.idPlayerTo = 0; /* Name server */
339 data.idPlayerFrom = dpidServer; /* Sending from session server */
340 data.lpMessage = lpMsg;
341 data.dwMessageSize = dwMsgSize;
342 data.bSystemMessage = TRUE; /* Allow reply to be sent */
343 data.lpISP = This->dp2->spData.lpISP;
344
345 TRACE( "Sending forward player request with 0x%08x\n", dpidServer );
346
347 lpMsg = DP_MSG_ExpectReply( This, &data,
350 &lpMsg, &dwMsgSize );
351 }
352
353 /* Need to examine the data and extract the new player id */
354 if( lpMsg != NULL )
355 {
356 FIXME( "Name Table reply received: stub\n" );
357 }
358
359 return hr;
360}
#define FIXME(fmt,...)
Definition: debug.h:111
#define TRUE
Definition: types.h:120
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define DPSET_REMOTE
Definition: dplay.h:1056
#define DPSEND_GUARANTEED
Definition: dplay.h:1038
#define DP_OK
Definition: dplay.h:88
#define IDirectPlaySP_GetSPPlayerData(p, a, b, c, d)
Definition: dplaysp.h:104
static void * DP_MSG_ExpectReply(IDirectPlayImpl *This, DPSP_SENDDATA *data, DWORD dwWaitTime, WORD wReplyCommandId, void **lplpReplyMsg, DWORD *lpdwMsgBodySize)
#define DPMSGVER_DP6
#define DPMSGCMD_GETNAMETABLEREPLY
#define DPMSGCMD_FORWARDADDPLAYER
#define DPMSG_WAIT_60_SECS
#define DPMSGMAGIC_DPLAYMSG
struct tagDPMSG_FORWARDADDPLAYER * LPDPMSG_FORWARDADDPLAYER
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
DWORD NS_GetNsMagic(LPVOID lpNSInfo)
Definition: name_server.c:177
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
DPMSG_SENDENVELOPE envelope
unsigned char * LPBYTE
Definition: typedefs.h:53
void WINAPI DebugBreak(void)
unsigned char BYTE
Definition: xxhash.c:193

Referenced by DP_IF_CreatePlayer().

◆ DP_MSG_ReplyReceived()

void DP_MSG_ReplyReceived ( IDirectPlayImpl This,
WORD  wCommandId,
LPCVOID  lpMsgBody,
DWORD  dwMsgBodySize 
)

◆ DP_MSG_SendRequestPlayerId()

HRESULT DP_MSG_SendRequestPlayerId ( IDirectPlayImpl This,
DWORD  dwFlags,
LPDPID  lpdipidAllocatedId 
)

◆ DP_MSG_ToSelf()

void DP_MSG_ToSelf ( IDirectPlayImpl This,
DPID  dpidSelf 
)

Definition at line 447 of file dplayx_messages.c.

448{
449 LPVOID lpMsg;
450 LPDPMSG_SENDENVELOPE lpMsgBody;
451 DWORD dwMsgSize;
452
453 dwMsgSize = This->dp2->spData.dwSPHeaderSize + sizeof( *lpMsgBody );
454
455 lpMsg = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, dwMsgSize );
456
457 lpMsgBody = (LPDPMSG_SENDENVELOPE)( (BYTE*)lpMsg +
458 This->dp2->spData.dwSPHeaderSize );
459
460 /* Compose dplay message envelope */
461 lpMsgBody->dwMagic = DPMSGMAGIC_DPLAYMSG;
463 lpMsgBody->wVersion = DPMSGVER_DP6;
464
465 /* Send the message to ourselves */
466 {
468
469 data.dwFlags = 0;
470 data.idPlayerTo = dpidSelf; /* Sending to session server */
471 data.idPlayerFrom = 0; /* Sending from session server */
472 data.lpMessage = lpMsg;
473 data.dwMessageSize = dwMsgSize;
474 data.bSystemMessage = TRUE; /* Allow reply to be sent */
475 data.lpISP = This->dp2->spData.lpISP;
476
477 lpMsg = DP_MSG_ExpectReply( This, &data,
480 &lpMsg, &dwMsgSize );
481 }
482}
#define DPMSG_WAIT_5_SECS
struct tagDPMSG_SENDENVELOPE * LPDPMSG_SENDENVELOPE
#define DPMSGCMD_JUSTENVELOPE

Referenced by DP_HandleMessage(), and DP_IF_CreatePlayer().