~ubuntu-branches/ubuntu/trusty/virtualbox-lts-xenial/trusty-updates

« back to all changes in this revision

Viewing changes to src/VBox/Devices/Graphics/shaderlib/wine/include/dplay8.h

  • Committer: Package Import Robot
  • Author(s): Gianfranco Costamagna
  • Date: 2016-02-23 14:28:26 UTC
  • Revision ID: package-import@ubuntu.com-20160223142826-bdu69el2z6wa2a44
Tags: upstream-4.3.36-dfsg
ImportĀ upstreamĀ versionĀ 4.3.36-dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2003-2005 Raphael Junqueira
 
3
 *
 
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.
 
8
 *
 
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.
 
13
 *
 
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
 
17
 */
 
18
 
 
19
/*
 
20
 * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
 
21
 * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
 
22
 * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
 
23
 * a choice of LGPL license versions is made available with the language indicating
 
24
 * that LGPLv2 or any later version may be used, or where a choice of which version
 
25
 * of the LGPL is applied is otherwise unspecified.
 
26
 */
 
27
 
 
28
#ifndef __WINE_DPLAY8_H
 
29
#define __WINE_DPLAY8_H
 
30
 
 
31
#include <ole2.h>
 
32
#include <dpaddr.h>
 
33
 
 
34
#ifdef __cplusplus
 
35
extern "C" {
 
36
#endif /* defined(__cplusplus) */
 
37
 
 
38
 
 
39
typedef HRESULT (WINAPI *PFNDPNMESSAGEHANDLER)(PVOID, DWORD, PVOID);
 
40
typedef DWORD   DPNID, *PDPNID;
 
41
typedef DWORD   DPNHANDLE, *PDPNHANDLE;
 
42
 
 
43
/*****************************************************************************
 
44
 * DirectPlay8 Message Id
 
45
 */
 
46
#define DPN_MSGID_OFFSET                        0xFFFF0000
 
47
#define DPN_MSGID_ADD_PLAYER_TO_GROUP           (DPN_MSGID_OFFSET | 0x0001)
 
48
#define DPN_MSGID_APPLICATION_DESC              (DPN_MSGID_OFFSET | 0x0002)
 
49
#define DPN_MSGID_ASYNC_OP_COMPLETE             (DPN_MSGID_OFFSET | 0x0003)
 
50
#define DPN_MSGID_CLIENT_INFO                   (DPN_MSGID_OFFSET | 0x0004)
 
51
#define DPN_MSGID_CONNECT_COMPLETE              (DPN_MSGID_OFFSET | 0x0005)
 
52
#define DPN_MSGID_CREATE_GROUP                  (DPN_MSGID_OFFSET | 0x0006)
 
53
#define DPN_MSGID_CREATE_PLAYER                 (DPN_MSGID_OFFSET | 0x0007)
 
54
#define DPN_MSGID_DESTROY_GROUP                 (DPN_MSGID_OFFSET | 0x0008)
 
55
#define DPN_MSGID_DESTROY_PLAYER                (DPN_MSGID_OFFSET | 0x0009)
 
56
#define DPN_MSGID_ENUM_HOSTS_QUERY              (DPN_MSGID_OFFSET | 0x000A)
 
57
#define DPN_MSGID_ENUM_HOSTS_RESPONSE           (DPN_MSGID_OFFSET | 0x000B)
 
58
#define DPN_MSGID_GROUP_INFO                    (DPN_MSGID_OFFSET | 0x000C)
 
59
#define DPN_MSGID_HOST_MIGRATE                  (DPN_MSGID_OFFSET | 0x000D)
 
60
#define DPN_MSGID_INDICATE_CONNECT              (DPN_MSGID_OFFSET | 0x000E)
 
61
#define DPN_MSGID_INDICATED_CONNECT_ABORTED     (DPN_MSGID_OFFSET | 0x000F)
 
62
#define DPN_MSGID_PEER_INFO                     (DPN_MSGID_OFFSET | 0x0010)
 
63
#define DPN_MSGID_RECEIVE                       (DPN_MSGID_OFFSET | 0x0011)
 
64
#define DPN_MSGID_REMOVE_PLAYER_FROM_GROUP      (DPN_MSGID_OFFSET | 0x0012)
 
65
#define DPN_MSGID_RETURN_BUFFER                 (DPN_MSGID_OFFSET | 0x0013)
 
66
#define DPN_MSGID_SEND_COMPLETE                 (DPN_MSGID_OFFSET | 0x0014)
 
67
#define DPN_MSGID_SERVER_INFO                   (DPN_MSGID_OFFSET | 0x0015)
 
68
#define DPN_MSGID_TERMINATE_SESSION             (DPN_MSGID_OFFSET | 0x0016)
 
69
#define DPN_MSGID_CREATE_THREAD                 (DPN_MSGID_OFFSET | 0x0017)
 
70
#define DPN_MSGID_DESTROY_THREAD                (DPN_MSGID_OFFSET | 0x0018)
 
71
#define DPN_MSGID_NAT_RESOLVER_QUERY            (DPN_MSGID_OFFSET | 0x0101)
 
72
 
 
73
/*****************************************************************************
 
74
 * DirectPlay8 Errors
 
75
 */
 
76
#define _DPN_FACILITY_CODE              0x015
 
77
#define _DPNHRESULT_BASE                0x8000
 
78
#define MAKE_DPNHRESULT(code)           MAKE_HRESULT(1, _DPN_FACILITY_CODE, (code + _DPNHRESULT_BASE))
 
79
 
 
80
#define DPNSUCCESS_EQUAL                MAKE_HRESULT(0, _DPN_FACILITY_CODE, (0x05 + _DPNHRESULT_BASE))
 
81
#define DPNSUCCESS_NOTEQUAL             MAKE_HRESULT(0, _DPN_FACILITY_CODE, (0x0A + _DPNHRESULT_BASE))
 
82
#define DPNSUCCESS_PENDING              MAKE_HRESULT(0, _DPN_FACILITY_CODE, (0x0E + _DPNHRESULT_BASE))
 
83
 
 
84
#define DPN_OK                          S_OK
 
85
#define DPNERR_GENERIC                  E_FAIL
 
86
#define DPNERR_INVALIDPARAM             E_INVALIDARG
 
87
#define DPNERR_UNSUPPORTED              E_NOTIMPL
 
88
#define DPNERR_NOINTERFACE              E_NOINTERFACE
 
89
#define DPNERR_OUTOFMEMORY              E_OUTOFMEMORY
 
90
#define DPNERR_INVALIDPOINTER           E_POINTER
 
91
#define DPNERR_PENDING                  DPNSUCCESS_PENDING
 
92
#define DPNERR_ABORTED                  MAKE_DPNHRESULT(0x030)
 
93
#define DPNERR_ADDRESSING               MAKE_DPNHRESULT(0x040)
 
94
#define DPNERR_ALREADYCLOSING           MAKE_DPNHRESULT(0x050)
 
95
#define DPNERR_ALREADYCONNECTED         MAKE_DPNHRESULT(0x060)
 
96
#define DPNERR_ALREADYDISCONNECTING     MAKE_DPNHRESULT(0x070)
 
97
#define DPNERR_ALREADYINITIALIZED       MAKE_DPNHRESULT(0x080)
 
98
#define DPNERR_ALREADYREGISTERED        MAKE_DPNHRESULT(0x090)
 
99
#define DPNERR_BUFFERTOOSMALL           MAKE_DPNHRESULT(0x100)
 
100
#define DPNERR_CANNOTCANCEL             MAKE_DPNHRESULT(0x110)
 
101
#define DPNERR_CANTCREATEGROUP          MAKE_DPNHRESULT(0x120)
 
102
#define DPNERR_CANTCREATEPLAYER         MAKE_DPNHRESULT(0x130)
 
103
#define DPNERR_CANTLAUNCHAPPLICATION    MAKE_DPNHRESULT(0x140)
 
104
#define DPNERR_CONNECTING               MAKE_DPNHRESULT(0x150)
 
105
#define DPNERR_CONNECTIONLOST           MAKE_DPNHRESULT(0x160)
 
106
#define DPNERR_CONVERSION               MAKE_DPNHRESULT(0x170)
 
107
#define DPNERR_DATATOOLARGE             MAKE_DPNHRESULT(0x175)
 
108
#define DPNERR_DOESNOTEXIST             MAKE_DPNHRESULT(0x180)
 
109
#define DPNERR_DPNSVRNOTAVAILABLE       MAKE_DPNHRESULT(0x185)
 
110
#define DPNERR_DUPLICATECOMMAND         MAKE_DPNHRESULT(0x190)
 
111
#define DPNERR_ENDPOINTNOTRECEIVING     MAKE_DPNHRESULT(0x200)
 
112
#define DPNERR_ENUMQUERYTOOLARGE        MAKE_DPNHRESULT(0x210)
 
113
#define DPNERR_ENUMRESPONSETOOLARGE     MAKE_DPNHRESULT(0x220)
 
114
#define DPNERR_EXCEPTION                MAKE_DPNHRESULT(0x230)
 
115
#define DPNERR_GROUPNOTEMPTY            MAKE_DPNHRESULT(0x240)
 
116
#define DPNERR_HOSTING                  MAKE_DPNHRESULT(0x250)
 
117
#define DPNERR_HOSTREJECTEDCONNECTION   MAKE_DPNHRESULT(0x260)
 
118
#define DPNERR_HOSTTERMINATEDSESSION    MAKE_DPNHRESULT(0x270)
 
119
#define DPNERR_INCOMPLETEADDRESS        MAKE_DPNHRESULT(0x280)
 
120
#define DPNERR_INVALIDADDRESSFORMAT     MAKE_DPNHRESULT(0x290)
 
121
#define DPNERR_INVALIDAPPLICATION       MAKE_DPNHRESULT(0x300)
 
122
#define DPNERR_INVALIDCOMMAND           MAKE_DPNHRESULT(0x310)
 
123
#define DPNERR_INVALIDDEVICEADDRESS     MAKE_DPNHRESULT(0x320)
 
124
#define DPNERR_INVALIDENDPOINT          MAKE_DPNHRESULT(0x330)
 
125
#define DPNERR_INVALIDFLAGS             MAKE_DPNHRESULT(0x340)
 
126
#define DPNERR_INVALIDGROUP             MAKE_DPNHRESULT(0x350)
 
127
#define DPNERR_INVALIDHANDLE            MAKE_DPNHRESULT(0x360)
 
128
#define DPNERR_INVALIDHOSTADDRESS       MAKE_DPNHRESULT(0x370)
 
129
#define DPNERR_INVALIDINSTANCE          MAKE_DPNHRESULT(0x380)
 
130
#define DPNERR_INVALIDINTERFACE         MAKE_DPNHRESULT(0x390)
 
131
#define DPNERR_INVALIDOBJECT            MAKE_DPNHRESULT(0x400)
 
132
#define DPNERR_INVALIDPASSWORD          MAKE_DPNHRESULT(0x410)
 
133
#define DPNERR_INVALIDPLAYER            MAKE_DPNHRESULT(0x420)
 
134
#define DPNERR_INVALIDPRIORITY          MAKE_DPNHRESULT(0x430)
 
135
#define DPNERR_INVALIDSTRING            MAKE_DPNHRESULT(0x440)
 
136
#define DPNERR_INVALIDURL               MAKE_DPNHRESULT(0x450)
 
137
#define DPNERR_INVALIDVERSION           MAKE_DPNHRESULT(0x460)
 
138
#define DPNERR_NOCAPS                   MAKE_DPNHRESULT(0x470)
 
139
#define DPNERR_NOCONNECTION             MAKE_DPNHRESULT(0x480)
 
140
#define DPNERR_NOHOSTPLAYER             MAKE_DPNHRESULT(0x490)
 
141
#define DPNERR_NOMOREADDRESSCOMPONENTS  MAKE_DPNHRESULT(0x500)
 
142
#define DPNERR_NORESPONSE               MAKE_DPNHRESULT(0x510)
 
143
#define DPNERR_NOTALLOWED               MAKE_DPNHRESULT(0x520)
 
144
#define DPNERR_NOTHOST                  MAKE_DPNHRESULT(0x530)
 
145
#define DPNERR_NOTREADY                 MAKE_DPNHRESULT(0x540)
 
146
#define DPNERR_NOTREGISTERED            MAKE_DPNHRESULT(0x550)
 
147
#define DPNERR_PLAYERALREADYINGROUP     MAKE_DPNHRESULT(0x560)
 
148
#define DPNERR_PLAYERLOST               MAKE_DPNHRESULT(0x570)
 
149
#define DPNERR_PLAYERNOTINGROUP         MAKE_DPNHRESULT(0x580)
 
150
#define DPNERR_PLAYERNOTREACHABLE       MAKE_DPNHRESULT(0x590)
 
151
#define DPNERR_SENDTOOLARGE             MAKE_DPNHRESULT(0x600)
 
152
#define DPNERR_SESSIONFULL              MAKE_DPNHRESULT(0x610)
 
153
#define DPNERR_TABLEFULL                MAKE_DPNHRESULT(0x620)
 
154
#define DPNERR_TIMEDOUT                 MAKE_DPNHRESULT(0x630)
 
155
#define DPNERR_UNINITIALIZED            MAKE_DPNHRESULT(0x640)
 
156
#define DPNERR_USERCANCEL               MAKE_DPNHRESULT(0x650)
 
157
 
 
158
/*****************************************************************************
 
159
 * DirectPlay8 defines
 
160
 */
 
161
#define DPNID_ALL_PLAYERS_GROUP                              0
 
162
#define DPNDESTROYGROUPREASON_NORMAL                    0x0001
 
163
#define DPNDESTROYGROUPREASON_AUTODESTRUCTED            0x0002
 
164
#define DPNDESTROYGROUPREASON_SESSIONTERMINATED         0x0003
 
165
#define DPNDESTROYPLAYERREASON_NORMAL                   0x0001
 
166
#define DPNDESTROYPLAYERREASON_CONNECTIONLOST           0x0002
 
167
#define DPNDESTROYPLAYERREASON_SESSIONTERMINATED        0x0003
 
168
#define DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER      0x0004
 
169
#define DPN_MAX_APPDESC_RESERVEDDATA_SIZE                   64
 
170
 
 
171
#define DPNOP_SYNC                                  0x80000000
 
172
#define DPNADDPLAYERTOGROUP_SYNC                    DPNOP_SYNC
 
173
#define DPNCANCEL_CONNECT                               0x0001
 
174
#define DPNCANCEL_ENUM                                  0x0002
 
175
#define DPNCANCEL_SEND                                  0x0004
 
176
#define DPNCANCEL_ALL_OPERATIONS                        0x8000
 
177
#define DPNCANCEL_PLAYER_SENDS                      0x80000000
 
178
#define DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH        (DPNCANCEL_PLAYER_SENDS | 0x00010000)
 
179
#define DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL      (DPNCANCEL_PLAYER_SENDS | 0x00020000)
 
180
#define DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW         (DPNCANCEL_PLAYER_SENDS | 0x00040000)
 
181
#define DPNCLOSE_IMMEDIATE                          0x00000001
 
182
#define DPNCONNECT_SYNC                             DPNOP_SYNC
 
183
#define DPNCONNECT_OKTOQUERYFORADDRESSING               0x0001
 
184
#define DPNCREATEGROUP_SYNC                         DPNOP_SYNC
 
185
#define DPNDESTROYGROUP_SYNC                        DPNOP_SYNC
 
186
#define DPNENUM_PLAYERS                                 0x0001
 
187
#define DPNENUM_GROUPS                                  0x0010
 
188
#define DPNENUMHOSTS_SYNC                           DPNOP_SYNC
 
189
#define DPNENUMHOSTS_OKTOQUERYFORADDRESSING             0x0001
 
190
#define DPNENUMHOSTS_NOBROADCASTFALLBACK                0x0002
 
191
#define DPNENUMSERVICEPROVIDERS_ALL                     0x0001
 
192
#define DPNGETLOCALHOSTADDRESSES_COMBINED               0x0001
 
193
#define DPNGETSENDQUEUEINFO_PRIORITY_NORMAL             0x0001
 
194
#define DPNGETSENDQUEUEINFO_PRIORITY_HIGH               0x0002
 
195
#define DPNGETSENDQUEUEINFO_PRIORITY_LOW                0x0004
 
196
#define DPNGROUP_AUTODESTRUCT                           0x0001
 
197
#define DPNHOST_OKTOQUERYFORADDRESSING                  0x0001
 
198
#define DPNINFO_NAME                                    0x0001
 
199
#define DPNINFO_DATA                                    0x0002
 
200
#define DPNINITIALIZE_DISABLEPARAMVAL                   0x0001
 
201
#define DPNINITIALIZE_HINT_LANSESSION                   0x0002
 
202
#define DPNINITIALIZE_DISABLELINKTUNING                 0x0004
 
203
#define DPNLOBBY_REGISTER                               0x0001
 
204
#define DPNLOBBY_UNREGISTER                             0x0002
 
205
#define DPNPLAYER_LOCAL                                 0x0002
 
206
#define DPNPLAYER_HOST                                  0x0004
 
207
#define DPNRECEIVE_GUARANTEED                           0x0001
 
208
#define DPNRECEIVE_COALESCED                            0x0002
 
209
#define DPNREMOVEPLAYERFROMGROUP_SYNC               DPNOP_SYNC
 
210
#define DPNSEND_SYNC                                DPNOP_SYNC
 
211
#define DPNSEND_NOCOPY                                  0x0001
 
212
#define DPNSEND_NOCOMPLETE                              0x0002
 
213
#define DPNSEND_COMPLETEONPROCESS                       0x0004
 
214
#define DPNSEND_GUARANTEED                              0x0008
 
215
#define DPNSEND_NONSEQUENTIAL                           0x0010
 
216
#define DPNSEND_NOLOOPBACK                              0x0020
 
217
#define DPNSEND_PRIORITY_LOW                            0x0040
 
218
#define DPNSEND_PRIORITY_HIGH                           0x0080
 
219
#define DPNSEND_COALESCE                                0x0100
 
220
#define DPNSENDCOMPLETE_GUARANTEED                      0x0001
 
221
#define DPNSENDCOMPLETE_COALESCED                       0x0002
 
222
#define DPNSESSION_CLIENT_SERVER                        0x0001
 
223
#define DPNSESSION_MIGRATE_HOST                         0x0004
 
224
#define DPNSESSION_NODPNSVR                             0x0040
 
225
#define DPNSESSION_REQUIREPASSWORD                      0x0080
 
226
#define DPNSESSION_NOENUMS                              0x0100
 
227
#define DPNSESSION_FAST_SIGNED                          0x0200
 
228
#define DPNSESSION_FULL_SIGNED                          0x0400
 
229
#define DPNSETCLIENTINFO_SYNC                       DPNOP_SYNC
 
230
#define DPNSETGROUPINFO_SYNC                        DPNOP_SYNC
 
231
#define DPNSETPEERINFO_SYNC                         DPNOP_SYNC
 
232
#define DPNSETSERVERINFO_SYNC                       DPNOP_SYNC
 
233
#define DPNSPCAPS_SUPPORTSDPNSRV                        0x0001
 
234
#define DPNSPCAPS_SUPPORTSBROADCAST                     0x0002
 
235
#define DPNSPCAPS_SUPPORTSALLADAPTERS                   0x0004
 
236
#define DPNSPCAPS_SUPPORTSTHREADPOOL                    0x0008
 
237
#define DPNSPCAPS_NETWORKSIMULATOR                      0x0010
 
238
#define DPNSPINFO_NETWORKSIMULATORDEVICE                0x0001
 
239
 
 
240
 
 
241
/*****************************************************************************
 
242
 * DirectPlay8 structures Typedefs
 
243
 */
 
244
typedef struct _DPN_APPLICATION_DESC {
 
245
  DWORD   dwSize;
 
246
  DWORD   dwFlags;
 
247
  GUID    guidInstance;
 
248
  GUID    guidApplication;
 
249
  DWORD   dwMaxPlayers;
 
250
  DWORD   dwCurrentPlayers;
 
251
  WCHAR*  pwszSessionName;
 
252
  WCHAR*  pwszPassword;
 
253
  PVOID   pvReservedData;
 
254
  DWORD   dwReservedDataSize;
 
255
  PVOID   pvApplicationReservedData;
 
256
  DWORD   dwApplicationReservedDataSize;
 
257
} DPN_APPLICATION_DESC, *PDPN_APPLICATION_DESC;
 
258
 
 
259
typedef struct _BUFFERDESC {
 
260
  DWORD   dwBufferSize;         
 
261
  BYTE*   pBufferData;          
 
262
} BUFFERDESC, DPN_BUFFER_DESC, *PDPN_BUFFER_DESC, *PBUFFERDESC;
 
263
 
 
264
typedef struct _DPN_CAPS {
 
265
  DWORD   dwSize;
 
266
  DWORD   dwFlags;
 
267
  DWORD   dwConnectTimeout;
 
268
  DWORD   dwConnectRetries;
 
269
  DWORD   dwTimeoutUntilKeepAlive;
 
270
} DPN_CAPS, *PDPN_CAPS;
 
271
 
 
272
typedef struct  _DPN_CAPS_EX {
 
273
  DWORD   dwSize;
 
274
  DWORD   dwFlags;
 
275
  DWORD   dwConnectTimeout;
 
276
  DWORD   dwConnectRetries;
 
277
  DWORD   dwTimeoutUntilKeepAlive;
 
278
  DWORD   dwMaxRecvMsgSize;
 
279
  DWORD   dwNumSendRetries;
 
280
  DWORD   dwMaxSendRetryInterval;
 
281
  DWORD   dwDropThresholdRate;
 
282
  DWORD   dwThrottleRate;
 
283
  DWORD   dwNumHardDisconnectSends;
 
284
  DWORD   dwMaxHardDisconnectPeriod;
 
285
} DPN_CAPS_EX, *PDPN_CAPS_EX;
 
286
 
 
287
typedef struct _DPN_CONNECTION_INFO {
 
288
  DWORD   dwSize;
 
289
  DWORD   dwRoundTripLatencyMS;
 
290
  DWORD   dwThroughputBPS;
 
291
  DWORD   dwPeakThroughputBPS;
 
292
  DWORD   dwBytesSentGuaranteed;
 
293
  DWORD   dwPacketsSentGuaranteed;
 
294
  DWORD   dwBytesSentNonGuaranteed;
 
295
  DWORD   dwPacketsSentNonGuaranteed;
 
296
  DWORD   dwBytesRetried;
 
297
  DWORD   dwPacketsRetried;
 
298
  DWORD   dwBytesDropped;
 
299
  DWORD   dwPacketsDropped;
 
300
  DWORD   dwMessagesTransmittedHighPriority;
 
301
  DWORD   dwMessagesTimedOutHighPriority;
 
302
  DWORD   dwMessagesTransmittedNormalPriority;
 
303
  DWORD   dwMessagesTimedOutNormalPriority;
 
304
  DWORD   dwMessagesTransmittedLowPriority;
 
305
  DWORD   dwMessagesTimedOutLowPriority;
 
306
  DWORD   dwBytesReceivedGuaranteed;
 
307
  DWORD   dwPacketsReceivedGuaranteed;
 
308
  DWORD   dwBytesReceivedNonGuaranteed;
 
309
  DWORD   dwPacketsReceivedNonGuaranteed;
 
310
  DWORD   dwMessagesReceived;
 
311
} DPN_CONNECTION_INFO, *PDPN_CONNECTION_INFO;
 
312
 
 
313
typedef struct _DPN_GROUP_INFO {
 
314
  DWORD   dwSize;
 
315
  DWORD   dwInfoFlags;
 
316
  PWSTR   pwszName;
 
317
  PVOID   pvData;
 
318
  DWORD   dwDataSize;
 
319
  DWORD   dwGroupFlags;
 
320
} DPN_GROUP_INFO, *PDPN_GROUP_INFO;
 
321
 
 
322
typedef struct _DPN_PLAYER_INFO {
 
323
  DWORD   dwSize;
 
324
  DWORD   dwInfoFlags;
 
325
  PWSTR   pwszName;
 
326
  PVOID   pvData;
 
327
  DWORD   dwDataSize;
 
328
  DWORD   dwPlayerFlags;
 
329
} DPN_PLAYER_INFO, *PDPN_PLAYER_INFO;
 
330
 
 
331
typedef struct _DPN_SERVICE_PROVIDER_INFO {
 
332
  DWORD   dwFlags;
 
333
  GUID    guid;
 
334
  WCHAR*  pwszName;
 
335
  PVOID   pvReserved;   
 
336
  DWORD   dwReserved;
 
337
} DPN_SERVICE_PROVIDER_INFO, *PDPN_SERVICE_PROVIDER_INFO;
 
338
 
 
339
typedef struct _DPN_SP_CAPS {
 
340
  DWORD   dwSize;
 
341
  DWORD   dwFlags;
 
342
  DWORD   dwNumThreads;
 
343
  DWORD   dwDefaultEnumCount;
 
344
  DWORD   dwDefaultEnumRetryInterval;
 
345
  DWORD   dwDefaultEnumTimeout;
 
346
  DWORD   dwMaxEnumPayloadSize;
 
347
  DWORD   dwBuffersPerThread;
 
348
  DWORD   dwSystemBufferSize;
 
349
} DPN_SP_CAPS, *PDPN_SP_CAPS;
 
350
 
 
351
typedef struct _DPN_SECURITY_CREDENTIALS  DPN_SECURITY_CREDENTIALS, *PDPN_SECURITY_CREDENTIALS;
 
352
typedef struct _DPN_SECURITY_DESC         DPN_SECURITY_DESC, *PDPN_SECURITY_DESC;
 
353
 
 
354
typedef struct _DPNMSG_ADD_PLAYER_TO_GROUP {
 
355
  DWORD   dwSize;
 
356
  DPNID   dpnidGroup;
 
357
  PVOID   pvGroupContext;
 
358
  DPNID   dpnidPlayer;
 
359
  PVOID   pvPlayerContext;
 
360
} DPNMSG_ADD_PLAYER_TO_GROUP, *PDPNMSG_ADD_PLAYER_TO_GROUP;
 
361
 
 
362
typedef struct _DPNMSG_ASYNC_OP_COMPLETE {
 
363
  DWORD      dwSize;
 
364
  DPNHANDLE  hAsyncOp;
 
365
  PVOID      pvUserContext;
 
366
  HRESULT    hResultCode;
 
367
} DPNMSG_ASYNC_OP_COMPLETE, *PDPNMSG_ASYNC_OP_COMPLETE;
 
368
 
 
369
typedef struct _DPNMSG_CLIENT_INFO {
 
370
  DWORD   dwSize;
 
371
  DPNID   dpnidClient;
 
372
  PVOID   pvPlayerContext;
 
373
} DPNMSG_CLIENT_INFO, *PDPNMSG_CLIENT_INFO;
 
374
 
 
375
typedef struct _DPNMSG_CONNECT_COMPLETE {
 
376
  DWORD      dwSize;
 
377
  DPNHANDLE  hAsyncOp;
 
378
  PVOID      pvUserContext;
 
379
  HRESULT    hResultCode;
 
380
  PVOID      pvApplicationReplyData;
 
381
  DWORD      dwApplicationReplyDataSize;
 
382
  /** DirectX 9 */
 
383
  DPNID      dpnidLocal;
 
384
} DPNMSG_CONNECT_COMPLETE, *PDPNMSG_CONNECT_COMPLETE;
 
385
 
 
386
typedef struct _DPNMSG_CREATE_GROUP {
 
387
  DWORD   dwSize;
 
388
  DPNID   dpnidGroup;
 
389
  DPNID   dpnidOwner;
 
390
  PVOID   pvGroupContext;
 
391
  /** DirectX 9 */
 
392
  PVOID   pvOwnerContext;       
 
393
} DPNMSG_CREATE_GROUP, *PDPNMSG_CREATE_GROUP;
 
394
 
 
395
typedef struct _DPNMSG_CREATE_PLAYER {
 
396
  DWORD   dwSize;
 
397
  DPNID   dpnidPlayer;
 
398
  PVOID   pvPlayerContext;
 
399
} DPNMSG_CREATE_PLAYER, *PDPNMSG_CREATE_PLAYER;
 
400
 
 
401
typedef struct _DPNMSG_DESTROY_GROUP {
 
402
  DWORD   dwSize;
 
403
  DPNID   dpnidGroup;
 
404
  PVOID   pvGroupContext;
 
405
  DWORD   dwReason;
 
406
} DPNMSG_DESTROY_GROUP, *PDPNMSG_DESTROY_GROUP;
 
407
 
 
408
typedef struct _DPNMSG_DESTROY_PLAYER {
 
409
  DWORD  dwSize;
 
410
  DPNID  dpnidPlayer;
 
411
  PVOID  pvPlayerContext;
 
412
  DWORD  dwReason;
 
413
} DPNMSG_DESTROY_PLAYER, *PDPNMSG_DESTROY_PLAYER;
 
414
 
 
415
typedef struct _DPNMSG_ENUM_HOSTS_QUERY {
 
416
  DWORD                 dwSize;
 
417
  IDirectPlay8Address*  pAddressSender;
 
418
  IDirectPlay8Address*  pAddressDevice;
 
419
  PVOID                 pvReceivedData;
 
420
  DWORD                 dwReceivedDataSize;
 
421
  DWORD                 dwMaxResponseDataSize;
 
422
  PVOID                 pvResponseData;
 
423
  DWORD                 dwResponseDataSize;
 
424
  PVOID                 pvResponseContext;
 
425
} DPNMSG_ENUM_HOSTS_QUERY, *PDPNMSG_ENUM_HOSTS_QUERY;
 
426
 
 
427
typedef struct _DPNMSG_ENUM_HOSTS_RESPONSE {
 
428
  DWORD                        dwSize;
 
429
  IDirectPlay8Address*         pAddressSender;
 
430
  IDirectPlay8Address*         pAddressDevice;
 
431
  const DPN_APPLICATION_DESC*  pApplicationDescription;
 
432
  PVOID                        pvResponseData;
 
433
  DWORD                        dwResponseDataSize;
 
434
  PVOID                        pvUserContext;
 
435
  DWORD                        dwRoundTripLatencyMS;
 
436
} DPNMSG_ENUM_HOSTS_RESPONSE, *PDPNMSG_ENUM_HOSTS_RESPONSE;
 
437
 
 
438
typedef struct _DPNMSG_GROUP_INFO {
 
439
  DWORD   dwSize;
 
440
  DPNID   dpnidGroup;
 
441
  PVOID   pvGroupContext;
 
442
} DPNMSG_GROUP_INFO, *PDPNMSG_GROUP_INFO;
 
443
 
 
444
typedef struct _DPNMSG_HOST_MIGRATE {
 
445
  DWORD   dwSize;
 
446
  DPNID   dpnidNewHost;
 
447
  PVOID   pvPlayerContext;
 
448
} DPNMSG_HOST_MIGRATE, *PDPNMSG_HOST_MIGRATE;
 
449
 
 
450
typedef struct _DPNMSG_INDICATE_CONNECT {
 
451
  DWORD                 dwSize;
 
452
  PVOID                 pvUserConnectData;
 
453
  DWORD                 dwUserConnectDataSize;
 
454
  PVOID                 pvReplyData;
 
455
  DWORD                 dwReplyDataSize;
 
456
  PVOID                 pvReplyContext;
 
457
  PVOID                 pvPlayerContext;
 
458
  IDirectPlay8Address*  pAddressPlayer;
 
459
  IDirectPlay8Address*  pAddressDevice;
 
460
} DPNMSG_INDICATE_CONNECT, *PDPNMSG_INDICATE_CONNECT;
 
461
 
 
462
typedef struct _DPNMSG_INDICATED_CONNECT_ABORTED {
 
463
  DWORD   dwSize;
 
464
  PVOID   pvPlayerContext;
 
465
} DPNMSG_INDICATED_CONNECT_ABORTED, *PDPNMSG_INDICATED_CONNECT_ABORTED;
 
466
 
 
467
typedef struct _DPNMSG_PEER_INFO {
 
468
  DWORD   dwSize;
 
469
  DPNID   dpnidPeer;
 
470
  PVOID   pvPlayerContext;
 
471
} DPNMSG_PEER_INFO, *PDPNMSG_PEER_INFO;
 
472
 
 
473
typedef struct _DPNMSG_RECEIVE {
 
474
  DWORD      dwSize;
 
475
  DPNID      dpnidSender;
 
476
  PVOID      pvPlayerContext;
 
477
  PBYTE      pReceiveData;
 
478
  DWORD      dwReceiveDataSize;
 
479
  DPNHANDLE  hBufferHandle;
 
480
  /** DirectX 9 */
 
481
  DWORD      dwReceiveFlags;    
 
482
} DPNMSG_RECEIVE, *PDPNMSG_RECEIVE;
 
483
 
 
484
typedef struct _DPNMSG_REMOVE_PLAYER_FROM_GROUP {
 
485
  DWORD   dwSize;
 
486
  DPNID   dpnidGroup;
 
487
  PVOID   pvGroupContext;
 
488
  DPNID   dpnidPlayer;
 
489
  PVOID   pvPlayerContext;
 
490
} DPNMSG_REMOVE_PLAYER_FROM_GROUP, *PDPNMSG_REMOVE_PLAYER_FROM_GROUP;
 
491
 
 
492
typedef struct _DPNMSG_RETURN_BUFFER {
 
493
  DWORD     dwSize;
 
494
  HRESULT   hResultCode;
 
495
  PVOID     pvBuffer;
 
496
  PVOID     pvUserContext;
 
497
} DPNMSG_RETURN_BUFFER, *PDPNMSG_RETURN_BUFFER;
 
498
 
 
499
typedef struct _DPNMSG_SEND_COMPLETE {
 
500
  DWORD       dwSize;
 
501
  DPNHANDLE   hAsyncOp;
 
502
  PVOID       pvUserContext;
 
503
  HRESULT     hResultCode;
 
504
  DWORD       dwSendTime;
 
505
  /** DirectX 9 */
 
506
  DWORD            dwFirstFrameRTT;
 
507
  DWORD            dwFirstFrameRetryCount;
 
508
  DWORD            dwSendCompleteFlags;
 
509
  DPN_BUFFER_DESC* pBuffers;
 
510
  DWORD            dwNumBuffers;
 
511
} DPNMSG_SEND_COMPLETE, *PDPNMSG_SEND_COMPLETE;
 
512
 
 
513
typedef struct _DPNMSG_SERVER_INFO {
 
514
  DWORD   dwSize;
 
515
  DPNID   dpnidServer;
 
516
  PVOID   pvPlayerContext;
 
517
} DPNMSG_SERVER_INFO, *PDPNMSG_SERVER_INFO;
 
518
 
 
519
typedef struct _DPNMSG_TERMINATE_SESSION {
 
520
  DWORD    dwSize;
 
521
  HRESULT  hResultCode;
 
522
  PVOID    pvTerminateData;
 
523
  DWORD    dwTerminateDataSize;
 
524
} DPNMSG_TERMINATE_SESSION, *PDPNMSG_TERMINATE_SESSION;
 
525
 
 
526
typedef struct _DPNMSG_CREATE_THREAD {
 
527
  DWORD    dwSize;
 
528
  DWORD    dwFlags;
 
529
  DWORD    dwProcessorNum;
 
530
  PVOID    pvUserContext;
 
531
} DPNMSG_CREATE_THREAD, *PDPNMSG_CREATE_THREAD;
 
532
 
 
533
typedef struct _DPNMSG_DESTROY_THREAD {
 
534
  DWORD    dwSize;
 
535
  DWORD    dwProcessorNum;
 
536
  PVOID    pvUserContext;
 
537
} DPNMSG_DESTROY_THREAD, *PDPNMSG_DESTROY_THREAD;
 
538
 
 
539
typedef struct _DPNMSG_NAT_RESOLVER_QUERY {
 
540
  DWORD    dwSize;
 
541
  IDirectPlay8Address* pAddressSender;
 
542
  IDirectPlay8Address* pAddressDevice;
 
543
  WCHAR*   pwszUserString;
 
544
} DPNMSG_NAT_RESOLVER_QUERY, *PDPNMSG_NAT_RESOLVER_QUERY;
 
545
 
 
546
/*****************************************************************************
 
547
 * Predeclare the interfaces
 
548
 */
 
549
DEFINE_GUID(CLSID_DirectPlay8Peer,        0x286f484d,0x375e,0x4458,0xa2,0x72,0xb1,0x38,0xe2,0xf8,0x0a,0x6a);
 
550
DEFINE_GUID(CLSID_DirectPlay8Client,      0x743f1dc6,0x5aba,0x429f,0x8b,0xdf,0xc5,0x4d,0x03,0x25,0x3d,0xc2);
 
551
DEFINE_GUID(CLSID_DirectPlay8Server,      0xda825e1b,0x6830,0x43d7,0x83,0x5d,0x0b,0x5a,0xd8,0x29,0x56,0xa2);
 
552
/** DirectX 9 */
 
553
DEFINE_GUID(CLSID_DirectPlay8ThreadPool,  0xfc47060e,0x6153,0x4b34,0xb9,0x75,0x8e,0x41,0x21,0xeb,0x7f,0x3c);
 
554
DEFINE_GUID(CLSID_DirectPlay8NATResolver, 0xe4c1d9a2,0xcbf7,0x48bd,0x9a,0x69,0x34,0xa5,0x5e,0x0d,0x89,0x41);
 
555
 
 
556
DEFINE_GUID(IID_IDirectPlay8Peer,         0x5102dacf,0x241b,0x11d3,0xae,0xa7,0x0,0x60,0x97,0xb0,0x14,0x11);
 
557
typedef struct IDirectPlay8Peer *PDIRECTPLAY8PEER;
 
558
DEFINE_GUID(IID_IDirectPlay8Client,       0x5102dacd,0x241b,0x11d3,0xae,0xa7,0x0,0x60,0x97,0xb0,0x14,0x11);
 
559
typedef struct IDirectPlay8Client *PDIRECTPLAY8CLIENT;
 
560
DEFINE_GUID(IID_IDirectPlay8Server,       0x5102dace,0x241b,0x11d3,0xae,0xa7,0x0,0x60,0x97,0xb0,0x14,0x11);
 
561
typedef struct IDirectPlay8Server *PDIRECTPLAY8SERVER;
 
562
/** DirectX 9 */
 
563
DEFINE_GUID(IID_IDirectPlay8ThreadPool,   0x0d22ee73,0x4a46,0x4a0d,0x89,0xb2,0x04,0x5b,0x4d,0x66,0x64,0x25);
 
564
typedef struct IDirectPlay8ThreadPool *PDIRECTPLAY8THREADPOOL;
 
565
DEFINE_GUID(IID_IDirectPlay8NATResolver,  0xa9e213f2,0x9a60,0x486f,0xbf,0x3b,0x53,0x40,0x8b,0x6d,0x1c,0xbb);
 
566
typedef struct IDirectPlay8NATResolver *PDIRECTPLAY8NATRESOLVER;
 
567
 
 
568
DEFINE_GUID(CLSID_DP8SP_IPX,               0x53934290,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
 
569
DEFINE_GUID(CLSID_DP8SP_TCPIP,             0xebfe7ba0,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
 
570
DEFINE_GUID(CLSID_DP8SP_SERIAL,            0x743b5d60,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
 
571
DEFINE_GUID(CLSID_DP8SP_MODEM,             0x6d4a3650,0x628d,0x11d2,0xae,0x0f,0x0,0x60,0x97,0xb0,0x14,0x11);
 
572
/** DirectX 9 */
 
573
DEFINE_GUID(CLSID_DP8SP_BLUETOOTH,         0x995513af,0x3027,0x4b9a,0x95,0x6e,0xc7,0x72,0xb3,0xf7,0x80,0x06);
 
574
 
 
575
typedef struct IDirectPlay8LobbiedApplication   *PIDirectPlay8LobbiedApplication, DNLOBBIEDAPPLICATION;
 
576
 
 
577
 
 
578
/*****************************************************************************
 
579
 * IDirectPlay8Client interface
 
580
 */
 
581
#define INTERFACE IDirectPlay8Client
 
582
DECLARE_INTERFACE_(IDirectPlay8Client,IUnknown)
 
583
{
 
584
    /*** IUnknown methods ***/
 
585
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
 
586
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
 
587
    STDMETHOD_(ULONG,Release)(THIS) PURE;
 
588
    /*** IDirectPlay8Client methods ***/
 
589
    STDMETHOD(Initialize)(THIS_ PVOID pvUserContext, PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags) PURE;
 
590
    STDMETHOD(EnumServiceProviders)(THIS_ const GUID *pguidServiceProvider, const GUID *pguidApplication, DPN_SERVICE_PROVIDER_INFO *pSPInfoBuffer, PDWORD pcbEnumData, PDWORD pcReturned, DWORD dwFlags) PURE;
 
591
    STDMETHOD(EnumHosts)(THIS_ PDPN_APPLICATION_DESC pApplicationDesc,IDirectPlay8Address *pAddrHost,IDirectPlay8Address *pDeviceInfo, PVOID pUserEnumData, DWORD dwUserEnumDataSize, DWORD dwEnumCount, DWORD dwRetryInterval, DWORD dwTimeOut, PVOID pvUserContext, DPNHANDLE *pAsyncHandle, DWORD dwFlags) PURE;
 
592
    STDMETHOD(CancelAsyncOperation)(THIS_ DPNHANDLE hAsyncHandle, DWORD dwFlags) PURE;
 
593
    STDMETHOD(Connect)(THIS_ const DPN_APPLICATION_DESC *pdnAppDesc,IDirectPlay8Address *pHostAddr,IDirectPlay8Address *pDeviceInfo, const DPN_SECURITY_DESC *pdnSecurity, const DPN_SECURITY_CREDENTIALS *pdnCredentials, const void *pvUserConnectData, DWORD dwUserConnectDataSize,void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
594
    STDMETHOD(Send)(THIS_ const DPN_BUFFER_DESC *prgBufferDesc, DWORD cBufferDesc, DWORD dwTimeOut, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
595
    STDMETHOD(GetSendQueueInfo)(THIS_ DWORD *pdwNumMsgs, DWORD *pdwNumBytes, DWORD dwFlags) PURE;
 
596
    STDMETHOD(GetApplicationDesc)(THIS_ DPN_APPLICATION_DESC *pAppDescBuffer, DWORD *pcbDataSize, DWORD dwFlags) PURE;
 
597
    STDMETHOD(SetClientInfo)(THIS_ const DPN_PLAYER_INFO *pdpnPlayerInfo, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
598
    STDMETHOD(GetServerInfo)(THIS_ DPN_PLAYER_INFO *pdpnPlayerInfo, DWORD *pdwSize, DWORD dwFlags) PURE;
 
599
    STDMETHOD(GetServerAddress)(THIS_ IDirectPlay8Address ** pAddress, DWORD dwFlags) PURE;
 
600
    STDMETHOD(Close)(THIS_ DWORD dwFlags) PURE;
 
601
    STDMETHOD(ReturnBuffer)(THIS_ DPNHANDLE hBufferHandle, DWORD dwFlags) PURE;
 
602
    STDMETHOD(GetCaps)(THIS_ DPN_CAPS *pdpCaps, DWORD dwFlags) PURE;
 
603
    STDMETHOD(SetCaps)(THIS_ const DPN_CAPS *pdpCaps, DWORD dwFlags) PURE;
 
604
    STDMETHOD(SetSPCaps)(THIS_ const GUID *pguidSP, const DPN_SP_CAPS *pdpspCaps, DWORD dwFlags ) PURE;
 
605
    STDMETHOD(GetSPCaps)(THIS_ const GUID *pguidSP, DPN_SP_CAPS *pdpspCaps, DWORD dwFlags) PURE;
 
606
    STDMETHOD(GetConnectionInfo)(THIS_ DPN_CONNECTION_INFO *pdpConnectionInfo, DWORD dwFlags) PURE;
 
607
    STDMETHOD(RegisterLobby)(THIS_ DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *pIDP8LobbiedApplication, DWORD dwFlags) PURE;
 
608
};
 
609
#undef INTERFACE
 
610
 
 
611
#if !defined(__cplusplus) || defined(CINTERFACE)
 
612
/*** IUnknown methods ***/
 
613
#define IDirectPlay8Client_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
 
614
#define IDirectPlay8Client_AddRef(p)                            (p)->lpVtbl->AddRef(p)
 
615
#define IDirectPlay8Client_Release(p)                           (p)->lpVtbl->Release(p)
 
616
/*** IDirectPlay8Client methods ***/
 
617
#define IDirectPlay8Client_Initialize(p,a,b,c)                  (p)->lpVtbl->Initialize(p,a,b,c)
 
618
#define IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f)
 
619
#define IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)   (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)
 
620
#define IDirectPlay8Client_CancelAsyncOperation(p,a,b)          (p)->lpVtbl->CancelAsyncOperation(p,a,b)
 
621
#define IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j)       (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j)
 
622
#define IDirectPlay8Client_Send(p,a,b,c,d,e,f)                  (p)->lpVtbl->Send(p,a,b,c,d,e,f)
 
623
#define IDirectPlay8Client_GetSendQueueInfo(p,a,b,c)            (p)->lpVtbl->GetSendQueueInfo(p,a,b,c)
 
624
#define IDirectPlay8Client_GetApplicationDesc(p,a,b,c)          (p)->lpVtbl->GetApplicationDesc(p,a,b,c)
 
625
#define IDirectPlay8Client_SetClientInfo(p,a,b,c,d)             (p)->lpVtbl->SetClientInfo(p,a,b,c,d)
 
626
#define IDirectPlay8Client_GetServerInfo(p,a,b,c)               (p)->lpVtbl->GetServerInfo(p,a,b,c)
 
627
#define IDirectPlay8Client_GetServerAddress(p,a,b)              (p)->lpVtbl->GetServerAddress(p,a,b)
 
628
#define IDirectPlay8Client_Close(p,a)                           (p)->lpVtbl->Close(p,a)
 
629
#define IDirectPlay8Client_ReturnBuffer(p,a,b)                  (p)->lpVtbl->ReturnBuffer(p,a,b)
 
630
#define IDirectPlay8Client_GetCaps(p,a,b)                       (p)->lpVtbl->GetCaps(p,a,b)
 
631
#define IDirectPlay8Client_SetCaps(p,a,b)                       (p)->lpVtbl->SetCaps(p,a,b)
 
632
#define IDirectPlay8Client_SetSPCaps(p,a,b,c)                   (p)->lpVtbl->SetSPCaps(p,a,b,c)
 
633
#define IDirectPlay8Client_GetSPCaps(p,a,b,c)                   (p)->lpVtbl->GetSPCaps(p,a,b,c)
 
634
#define IDirectPlay8Client_GetConnectionInfo(p,a,b)             (p)->lpVtbl->GetConnectionInfo(p,a,b)
 
635
#define IDirectPlay8Client_RegisterLobby(p,a,b,c)               (p)->lpVtbl->RegisterLobby(p,a,b,c)
 
636
#else
 
637
/*** IUnknown methods ***/
 
638
#define IDirectPlay8Client_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
 
639
#define IDirectPlay8Client_AddRef(p)                            (p)->AddRef()
 
640
#define IDirectPlay8Client_Release(p)                           (p)->Release()
 
641
/*** IDirectPlay8Client methods ***/
 
642
#define IDirectPlay8Client_Initialize(p,a,b,c)                  (p)->Initialize(a,b,c)
 
643
#define IDirectPlay8Client_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->EnumServiceProviders(a,b,c,d,e,f)
 
644
#define IDirectPlay8Client_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)   (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k)
 
645
#define IDirectPlay8Client_CancelAsyncOperation(p,a,b)          (p)->CancelAsyncOperation(a,b)
 
646
#define IDirectPlay8Client_Connect(p,a,b,c,d,e,f,g,h,i,j)       (p)->Connect(a,b,c,d,e,f,g,h,i,j)
 
647
#define IDirectPlay8Client_Send(p,a,b,c,d,e,f)                  (p)->Send(a,b,c,d,e,f)
 
648
#define IDirectPlay8Client_GetSendQueueInfo(p,a,b,c)            (p)->GetSendQueueInfo(a,b,c)
 
649
#define IDirectPlay8Client_GetApplicationDesc(p,a,b,c)          (p)->GetApplicationDesc(a,b,c)
 
650
#define IDirectPlay8Client_SetClientInfo(p,a,b,c,d)             (p)->SetClientInfo(a,b,c,d)
 
651
#define IDirectPlay8Client_GetServerInfo(p,a,b,c)               (p)->GetServerInfo(a,b,c)
 
652
#define IDirectPlay8Client_GetServerAddress(p,a,b)              (p)->GetServerAddress(a,b)
 
653
#define IDirectPlay8Client_Close(p,a)                           (p)->Close(a)
 
654
#define IDirectPlay8Client_ReturnBuffer(p,a,b)                  (p)->ReturnBuffer(a,b)
 
655
#define IDirectPlay8Client_GetCaps(p,a,b)                       (p)->GetCaps(a,b)
 
656
#define IDirectPlay8Client_SetCaps(p,a,b)                       (p)->SetCaps(a,b)
 
657
#define IDirectPlay8Client_SetSPCaps(p,a,b,c)                   (p)->SetSPCaps(a,b,c)
 
658
#define IDirectPlay8Client_GetSPCaps(p,a,b,c)                   (p)->GetSPCaps(a,b,c)
 
659
#define IDirectPlay8Client_GetConnectionInfo(p,a,b)             (p)->GetConnectionInfo(a,b)
 
660
#define IDirectPlay8Client_RegisterLobby(p,a,b,c)               (p)->RegisterLobby(a,b,c)
 
661
#endif
 
662
 
 
663
/*****************************************************************************
 
664
 * IDirectPlay8Server interface
 
665
 */
 
666
#define INTERFACE IDirectPlay8Server
 
667
DECLARE_INTERFACE_(IDirectPlay8Server,IUnknown)
 
668
{
 
669
    /*** IUnknown methods ***/
 
670
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
 
671
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
 
672
    STDMETHOD_(ULONG,Release)(THIS) PURE;
 
673
    /*** IDirectPlay8Server methods ***/
 
674
    STDMETHOD(Initialize)(THIS_ PVOID pvUserContext, PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags) PURE;
 
675
    STDMETHOD(EnumServiceProviders)(THIS_ const GUID *pguidServiceProvider, const GUID *pguidApplication, DPN_SERVICE_PROVIDER_INFO *pSPInfoBuffer, PDWORD pcbEnumData, PDWORD pcReturned, DWORD dwFlags) PURE;
 
676
    STDMETHOD(CancelAsyncOperation)(THIS_ DPNHANDLE hAsyncHandle, DWORD dwFlags) PURE;
 
677
    STDMETHOD(GetSendQueueInfo)(THIS_ DPNID dpnid, DWORD *pdwNumMsgs, DWORD *pdwNumBytes, DWORD dwFlags) PURE;
 
678
    STDMETHOD(GetApplicationDesc)(THIS_ DPN_APPLICATION_DESC *pAppDescBuffer, DWORD *pcbDataSize, DWORD dwFlags) PURE;
 
679
    STDMETHOD(SetServerInfo)(THIS_ const DPN_PLAYER_INFO *pdpnPlayerInfo, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
680
    STDMETHOD(GetClientInfo)(THIS_ DPNID dpnid, DPN_PLAYER_INFO *pdpnPlayerInfo, DWORD *pdwSize, DWORD dwFlags) PURE;
 
681
    STDMETHOD(GetClientAddress)(THIS_ DPNID dpnid, IDirectPlay8Address ** pAddress, DWORD dwFlags) PURE;
 
682
    STDMETHOD(GetLocalHostAddresses)(THIS_ IDirectPlay8Address ** prgpAddress, DWORD *pcAddress, DWORD dwFlags) PURE;
 
683
    STDMETHOD(SetApplicationDesc)(THIS_ const DPN_APPLICATION_DESC *pad, DWORD dwFlags) PURE;
 
684
    STDMETHOD(Host)(THIS_ const DPN_APPLICATION_DESC *pdnAppDesc, IDirectPlay8Address ** prgpDeviceInfo, DWORD cDeviceInfo, const DPN_SECURITY_DESC *pdnSecurity, const DPN_SECURITY_CREDENTIALS *pdnCredentials, void *pvPlayerContext, DWORD dwFlags) PURE;
 
685
    STDMETHOD(SendTo)(THIS_ DPNID dpnid, const DPN_BUFFER_DESC *prgBufferDesc, DWORD cBufferDesc, DWORD dwTimeOut, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
686
    STDMETHOD(CreateGroup)(THIS_ const DPN_GROUP_INFO *pdpnGroupInfo, void *pvGroupContext, void *pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
687
    STDMETHOD(DestroyGroup)(THIS_ DPNID idGroup, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
688
    STDMETHOD(AddPlayerToGroup)(THIS_ DPNID idGroup, DPNID idClient, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
689
    STDMETHOD(RemovePlayerFromGroup)(THIS_ DPNID idGroup, DPNID idClient, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
690
    STDMETHOD(SetGroupInfo)(THIS_ DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo, PVOID pvAsyncContext, DPNHANDLE *phAsyncHandle, DWORD dwFlags) PURE;
 
691
    STDMETHOD(GetGroupInfo)(THIS_ DPNID dpnid, DPN_GROUP_INFO *pdpnGroupInfo, DWORD *pdwSize, DWORD dwFlags) PURE;
 
692
    STDMETHOD(EnumPlayersAndGroups)(THIS_ DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags) PURE;
 
693
    STDMETHOD(EnumGroupMembers)(THIS_ DPNID dpnid, DPNID *prgdpnid, DWORD *pcdpnid, DWORD dwFlags) PURE;
 
694
    STDMETHOD(Close)(THIS_ DWORD dwFlags) PURE;
 
695
    STDMETHOD(DestroyClient)(THIS_ DPNID dpnidClient, const void *pvDestroyData, DWORD dwDestroyDataSize, DWORD dwFlags) PURE;
 
696
    STDMETHOD(ReturnBuffer)(THIS_ DPNHANDLE hBufferHandle, DWORD dwFlags) PURE;
 
697
    STDMETHOD(GetPlayerContext)(THIS_ DPNID dpnid, PVOID *ppvPlayerContext, DWORD dwFlags) PURE;
 
698
    STDMETHOD(GetGroupContext)(THIS_ DPNID dpnid, PVOID *ppvGroupContext, DWORD dwFlags) PURE;
 
699
    STDMETHOD(GetCaps)(THIS_ DPN_CAPS *pdpCaps, DWORD dwFlags) PURE;
 
700
    STDMETHOD(SetCaps)(THIS_ const DPN_CAPS *pdpCaps, DWORD dwFlags) PURE;
 
701
    STDMETHOD(SetSPCaps)(THIS_ const GUID *pguidSP, const DPN_SP_CAPS *pdpspCaps, DWORD dwFlags ) PURE;
 
702
    STDMETHOD(GetSPCaps)(THIS_ const GUID *pguidSP, DPN_SP_CAPS *pdpspCaps, DWORD dwFlags) PURE;
 
703
    STDMETHOD(GetConnectionInfo)(THIS_ DPNID dpnid, DPN_CONNECTION_INFO *pdpConnectionInfo, DWORD dwFlags) PURE;
 
704
    STDMETHOD(RegisterLobby)(THIS_ DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication *pIDP8LobbiedApplication, DWORD dwFlags) PURE;
 
705
};
 
706
#undef INTERFACE
 
707
 
 
708
#if !defined(__cplusplus) || defined(CINTERFACE)
 
709
/*** IUnknown methods ***/
 
710
#define IDirectPlay8Server_QueryInterface(p,a,b)                (p)->lpVtbl->QueryInterface(p,a,b)
 
711
#define IDirectPlay8Server_AddRef(p)                            (p)->lpVtbl->AddRef(p)
 
712
#define IDirectPlay8Server_Release(p)                           (p)->lpVtbl->Release(p)
 
713
/*** IDirectPlay8Server methods ***/
 
714
#define IDirectPlay8Server_Initialize(p,a,b,c)                  (p)->lpVtbl->Initialize(p,a,b,c)
 
715
#define IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f)
 
716
#define IDirectPlay8Server_CancelAsyncOperation(p,a,b)          (p)->lpVtbl->CancelAsyncOperation(p,a,b)
 
717
#define IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d)          (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d)
 
718
#define IDirectPlay8Server_GetApplicationDesc(p,a,b,c)          (p)->lpVtbl->GetApplicationDesc(p,a,b,c)
 
719
#define IDirectPlay8Server_SetServerInfo(p,a,b,c,d)             (p)->lpVtbl->SetServerInfo(p,a,b,c,d)
 
720
#define IDirectPlay8Server_GetClientInfo(p,a,b,c,d)             (p)->lpVtbl->GetClientInfo(p,a,b,c,d)
 
721
#define IDirectPlay8Server_GetClientAddress(p,a,b,c)            (p)->lpVtbl->GetClientAddress(p,a,b,c)
 
722
#define IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c)       (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c)
 
723
#define IDirectPlay8Server_SetApplicationDesc(p,a,b)            (p)->lpVtbl->SetApplicationDesc(p,a,b)
 
724
#define IDirectPlay8Server_Host(p,a,b,c,d,e,f,g)                (p)->lpVtbl->Host(p,a,b,c,d,e,f,g)
 
725
#define IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g)              (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g)
 
726
#define IDirectPlay8Server_CreateGroup(p,a,b,c,d,e)             (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
 
727
#define IDirectPlay8Server_DestroyGroup(p,a,b,c,d)              (p)->lpVtbl->DestroyGroup(p,a,b,c,d)
 
728
#define IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e)        (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e)
 
729
#define IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e)   (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e)
 
730
#define IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e)            (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e)
 
731
#define IDirectPlay8Server_GetGroupInfo(p,a,b,c,d)              (p)->lpVtbl->GetGroupInfo(p,a,b,c,d)
 
732
#define IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c)        (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c)
 
733
#define IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d)          (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d)
 
734
#define IDirectPlay8Server_Close(p,a)                           (p)->lpVtbl->Close(p,a)
 
735
#define IDirectPlay8Server_DestroyClient(p,a,b,c,d)             (p)->lpVtbl->DestroyClient(p,a,b,c,d)
 
736
#define IDirectPlay8Server_ReturnBuffer(p,a,b)                  (p)->lpVtbl->ReturnBuffer(p,a,b)
 
737
#define IDirectPlay8Server_GetPlayerContext(p,a,b,c)            (p)->lpVtbl->GetPlayerContext(p,a,b,c)
 
738
#define IDirectPlay8Server_GetGroupContext(p,a,b,c)             (p)->lpVtbl->GetGroupContext(p,a,b,c)
 
739
#define IDirectPlay8Server_GetCaps(p,a,b)                       (p)->lpVtbl->GetCaps(p,a,b)
 
740
#define IDirectPlay8Server_SetCaps(p,a,b)                       (p)->lpVtbl->SetCaps(p,a,b)
 
741
#define IDirectPlay8Server_SetSPCaps(p,a,b,c)                   (p)->lpVtbl->SetSPCaps(p,a,b,c)
 
742
#define IDirectPlay8Server_GetSPCaps(p,a,b,c)                   (p)->lpVtbl->GetSPCaps(p,a,b,c)
 
743
#define IDirectPlay8Server_GetConnectionInfo(p,a,b,c)           (p)->lpVtbl->GetConnectionInfo(p,a,b,c)
 
744
#define IDirectPlay8Server_RegisterLobby(p,a,b,c)               (p)->lpVtbl->RegisterLobby(p,a,b,c)
 
745
#else
 
746
/*** IUnknown methods ***/
 
747
#define IDirectPlay8Server_QueryInterface(p,a,b)                (p)->QueryInterface(a,b)
 
748
#define IDirectPlay8Server_AddRef(p)                            (p)->AddRef()
 
749
#define IDirectPlay8Server_Release(p)                           (p)->Release()
 
750
/*** IDirectPlay8Server methods ***/
 
751
#define IDirectPlay8Server_Initialize(p,a,b,c)                  (p)->Initialize(a,b,c)
 
752
#define IDirectPlay8Server_EnumServiceProviders(p,a,b,c,d,e,f)  (p)->EnumServiceProviders(a,b,c,d,e,f)
 
753
#define IDirectPlay8Server_CancelAsyncOperation(p,a,b)          (p)->CancelAsyncOperation(a,b)
 
754
#define IDirectPlay8Server_GetSendQueueInfo(p,a,b,c,d)          (p)->GetSendQueueInfo(a,b,c,d)
 
755
#define IDirectPlay8Server_GetApplicationDesc(p,a,b,c)          (p)->GetApplicationDesc(a,b,c)
 
756
#define IDirectPlay8Server_SetServerInfo(p,a,b,c,d)             (p)->SetServerInfo(a,b,c,d)
 
757
#define IDirectPlay8Server_GetClientInfo(p,a,b,c,d)             (p)->GetClientInfo(a,b,c,d)
 
758
#define IDirectPlay8Server_GetClientAddress(p,a,b,c)            (p)->GetClientAddress(a,b,c)
 
759
#define IDirectPlay8Server_GetLocalHostAddresses(p,a,b,c)       (p)->GetLocalHostAddresses(a,b,c)
 
760
#define IDirectPlay8Server_SetApplicationDesc(p,a,b)            (p)->SetApplicationDesc(a,b)
 
761
#define IDirectPlay8Server_Host(p,a,b,c,d,e,f,g)                (p)->Host(a,b,c,d,e,f,g)
 
762
#define IDirectPlay8Server_SendTo(p,a,b,c,d,e,f,g)              (p)->SendTo(a,b,c,d,e,f,g)
 
763
#define IDirectPlay8Server_CreateGroup(p,a,b,c,d,e)             (p)->CreateGroup(a,b,c,d,e)
 
764
#define IDirectPlay8Server_DestroyGroup(p,a,b,c,d)              (p)->DestroyGroup(a,b,c,d)
 
765
#define IDirectPlay8Server_AddPlayerToGroup(p,a,b,c,d,e)        (p)->AddPlayerToGroup(a,b,c,d,e)
 
766
#define IDirectPlay8Server_RemovePlayerFromGroup(p,a,b,c,d,e)   (p)->RemovePlayerFromGroup(a,b,c,d,e)
 
767
#define IDirectPlay8Server_SetGroupInfo(p,a,b,c,d,e)            (p)->SetGroupInfo(a,b,c,d,e)
 
768
#define IDirectPlay8Server_GetGroupInfo(p,a,b,c,d)              (p)->GetGroupInfo(a,b,c,d)
 
769
#define IDirectPlay8Server_EnumPlayersAndGroups(p,a,b,c)        (p)->EnumPlayersAndGroups(a,b,c)
 
770
#define IDirectPlay8Server_EnumGroupMembers(p,a,b,c,d)          (p)->EnumGroupMembers(a,b,c,d)
 
771
#define IDirectPlay8Server_Close(p,a)                           (p)->Close(a)
 
772
#define IDirectPlay8Server_DestroyClient(p,a,b,c,d)             (p)->DestroyClient(a,b,c,d)
 
773
#define IDirectPlay8Server_ReturnBuffer(p,a,b)                  (p)->ReturnBuffer(a,b)
 
774
#define IDirectPlay8Server_GetPlayerContext(p,a,b,c)            (p)->GetPlayerContext(a,b,c)
 
775
#define IDirectPlay8Server_GetGroupContext(p,a,b,c)             (p)->GetGroupContext(a,b,c)
 
776
#define IDirectPlay8Server_GetCaps(p,a,b)                       (p)->GetCaps(a,b)
 
777
#define IDirectPlay8Server_SetCaps(p,a,b)                       (p)->SetCaps(a,b)
 
778
#define IDirectPlay8Server_SetSPCaps(p,a,b,c)                   (p)->SetSPCaps(a,b,c)
 
779
#define IDirectPlay8Server_GetSPCaps(p,a,b,c)                   (p)->GetSPCaps(a,b,c)
 
780
#define IDirectPlay8Server_GetConnectionInfo(p,a,b,c)           (p)->GetConnectionInfo(a,b,c)
 
781
#define IDirectPlay8Server_RegisterLobby(p,a,b,c)               (p)->RegisterLobby(a,b,c)
 
782
#endif
 
783
 
 
784
/*****************************************************************************
 
785
 * IDirectPlay8Peer interface
 
786
 */
 
787
#define INTERFACE IDirectPlay8Peer
 
788
DECLARE_INTERFACE_(IDirectPlay8Peer,IUnknown)
 
789
{
 
790
    /*** IUnknown methods ***/
 
791
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
 
792
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
 
793
    STDMETHOD_(ULONG,Release)(THIS) PURE;
 
794
    /*** IDirectPlay8Peer methods ***/
 
795
    STDMETHOD(Initialize)(THIS_ PVOID pvUserContext, PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags) PURE;
 
796
    STDMETHOD(EnumServiceProviders)(THIS_ const GUID* pguidServiceProvider, const GUID* pguidApplication, DPN_SERVICE_PROVIDER_INFO* pSPInfoBuffer, DWORD* pcbEnumData, DWORD* pcReturned, DWORD dwFlags) PURE;
 
797
    STDMETHOD(CancelAsyncOperation)(THIS_ DPNHANDLE hAsyncHandle, DWORD dwFlags) PURE;
 
798
    STDMETHOD(Connect)(THIS_ const DPN_APPLICATION_DESC* pdnAppDesc, IDirectPlay8Address* pHostAddr, IDirectPlay8Address* pDeviceInfo, const DPN_SECURITY_DESC* pdnSecurity, const DPN_SECURITY_CREDENTIALS* pdnCredentials, const void* pvUserConnectData, DWORD dwUserConnectDataSize, void* pvPlayerContext, void* pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
799
    STDMETHOD(SendTo)(THIS_ DPNID dpnid, const DPN_BUFFER_DESC* prgBufferDesc, DWORD cBufferDesc, DWORD dwTimeOut, void* pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
800
    STDMETHOD(GetSendQueueInfo)(THIS_ DPNID dpnid, DWORD* pdwNumMsgs, DWORD* pdwNumBytes, DWORD dwFlags) PURE;
 
801
    STDMETHOD(Host)(THIS_ const DPN_APPLICATION_DESC* pdnAppDesc, IDirectPlay8Address **prgpDeviceInfo, DWORD cDeviceInfo, const DPN_SECURITY_DESC* pdnSecurity, const DPN_SECURITY_CREDENTIALS* pdnCredentials, void* pvPlayerContext, DWORD dwFlags) PURE;
 
802
    STDMETHOD(GetApplicationDesc)(THIS_ DPN_APPLICATION_DESC* pAppDescBuffer, DWORD* pcbDataSize, DWORD dwFlags) PURE;
 
803
    STDMETHOD(SetApplicationDesc)(THIS_ const DPN_APPLICATION_DESC* pad, DWORD dwFlags) PURE;
 
804
    STDMETHOD(CreateGroup)(THIS_ const DPN_GROUP_INFO* pdpnGroupInfo, void* pvGroupContext, void* pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
805
    STDMETHOD(DestroyGroup)(THIS_ DPNID idGroup, PVOID pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
806
    STDMETHOD(AddPlayerToGroup)(THIS_ DPNID idGroup, DPNID idClient, PVOID pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
807
    STDMETHOD(RemovePlayerFromGroup)(THIS_ DPNID idGroup, DPNID idClient, PVOID pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
808
    STDMETHOD(SetGroupInfo)(THIS_ DPNID dpnid, DPN_GROUP_INFO* pdpnGroupInfo,PVOID pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
809
    STDMETHOD(GetGroupInfo)(THIS_ DPNID dpnid, DPN_GROUP_INFO* pdpnGroupInfo, DWORD* pdwSize, DWORD dwFlags) PURE;
 
810
    STDMETHOD(EnumPlayersAndGroups)(THIS_ DPNID* prgdpnid, DWORD* pcdpnid, DWORD dwFlags) PURE;
 
811
    STDMETHOD(EnumGroupMembers)(THIS_ DPNID dpnid, DPNID* prgdpnid, DWORD* pcdpnid, DWORD dwFlags) PURE;
 
812
    STDMETHOD(SetPeerInfo)(THIS_ const DPN_PLAYER_INFO* pdpnPlayerInfo,PVOID pvAsyncContext, DPNHANDLE* phAsyncHandle, DWORD dwFlags) PURE;
 
813
    STDMETHOD(GetPeerInfo)(THIS_ DPNID dpnid, DPN_PLAYER_INFO* pdpnPlayerInfo, DWORD* pdwSize, DWORD dwFlags) PURE;
 
814
    STDMETHOD(GetPeerAddress)(THIS_ DPNID dpnid, IDirectPlay8Address** pAddress, DWORD dwFlags) PURE;
 
815
    STDMETHOD(GetLocalHostAddresses)(THIS_ IDirectPlay8Address** prgpAddress, DWORD* pcAddress, DWORD dwFlags) PURE;
 
816
    STDMETHOD(Close)(THIS_ DWORD dwFlags) PURE;
 
817
    STDMETHOD(EnumHosts)(THIS_ PDPN_APPLICATION_DESC pApplicationDesc, IDirectPlay8Address* pAddrHost, IDirectPlay8Address* pDeviceInfo,PVOID pUserEnumData, DWORD dwUserEnumDataSize, DWORD dwEnumCount, DWORD dwRetryInterval, DWORD dwTimeOut,PVOID pvUserContext, DPNHANDLE* pAsyncHandle, DWORD dwFlags) PURE;
 
818
    STDMETHOD(DestroyPeer)(THIS_ DPNID dpnidClient, const void* pvDestroyData, DWORD dwDestroyDataSize, DWORD dwFlags) PURE;
 
819
    STDMETHOD(ReturnBuffer)(THIS_ DPNHANDLE hBufferHandle, DWORD dwFlags) PURE;
 
820
    STDMETHOD(GetPlayerContext)(THIS_ DPNID dpnid,PVOID* ppvPlayerContext, DWORD dwFlags) PURE;
 
821
    STDMETHOD(GetGroupContext)(THIS_ DPNID dpnid,PVOID* ppvGroupContext, DWORD dwFlags) PURE;
 
822
    STDMETHOD(GetCaps)(THIS_ DPN_CAPS* pdpCaps, DWORD dwFlags) PURE;
 
823
    STDMETHOD(SetCaps)(THIS_ const DPN_CAPS* pdpCaps, DWORD dwFlags) PURE;
 
824
    STDMETHOD(SetSPCaps)(THIS_ const GUID* pguidSP, const DPN_SP_CAPS* pdpspCaps, DWORD dwFlags ) PURE;
 
825
    STDMETHOD(GetSPCaps)(THIS_ const GUID* pguidSP, DPN_SP_CAPS* pdpspCaps, DWORD dwFlags) PURE;
 
826
    STDMETHOD(GetConnectionInfo)(THIS_ DPNID dpnid, DPN_CONNECTION_INFO* pdpConnectionInfo, DWORD dwFlags) PURE;
 
827
    STDMETHOD(RegisterLobby)(THIS_ DPNHANDLE dpnHandle, struct IDirectPlay8LobbiedApplication* pIDP8LobbiedApplication, DWORD dwFlags) PURE;
 
828
    STDMETHOD(TerminateSession)(THIS_ void* pvTerminateData, DWORD dwTerminateDataSize, DWORD dwFlags) PURE;
 
829
};
 
830
#undef INTERFACE
 
831
 
 
832
#if !defined(__cplusplus) || defined(CINTERFACE)
 
833
/*** IUnknown methods ***/
 
834
#define IDirectPlay8Peer_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
 
835
#define IDirectPlay8Peer_AddRef(p)                              (p)->lpVtbl->AddRef(p)
 
836
#define IDirectPlay8Peer_Release(p)                             (p)->lpVtbl->Release(p)
 
837
/*** IDirectPlay8Peer methods ***/
 
838
#define IDirectPlay8Peer_Initialize(p,a,b,c)                    (p)->lpVtbl->Initialize(p,a,b,c)
 
839
#define IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f)    (p)->lpVtbl->EnumServiceProviders(p,a,b,c,d,e,f)
 
840
#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)
 
841
#define IDirectPlay8Peer_CancelAsyncOperation(p,a,b)            (p)->lpVtbl->CancelAsyncOperation(p,a,b)
 
842
#define IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k)       (p)->lpVtbl->Connect(p,a,b,c,d,e,f,g,h,i,j,k)
 
843
#define IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g)                (p)->lpVtbl->SendTo(p,a,b,c,d,e,f,g)
 
844
#define IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d)            (p)->lpVtbl->GetSendQueueInfo(p,a,b,c,d)
 
845
#define IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g)                  (p)->lpVtbl->Host(p,a,b,c,d,e,f,g)
 
846
#define IDirectPlay8Peer_GetApplicationDesc(p,a,b,c)            (p)->lpVtbl->GetApplicationDesc(p,a,b,c)
 
847
#define IDirectPlay8Peer_SetApplicationDesc(p,a,b)              (p)->lpVtbl->SetApplicationDesc(p,a,b)
 
848
#define IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e)               (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
 
849
#define IDirectPlay8Peer_DestroyGroup(p,a,b,c,d)                (p)->lpVtbl->DestroyGroup(p,a,b,c,d)
 
850
#define IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e)          (p)->lpVtbl->AddPlayerToGroup(p,a,b,c,d,e)
 
851
#define IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e)     (p)->lpVtbl->RemovePlayerFromGroup(p,a,b,c,d,e)
 
852
#define IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e)              (p)->lpVtbl->SetGroupInfo(p,a,b,c,d,e)
 
853
#define IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d)                (p)->lpVtbl->GetGroupInfo(p,a,b,c,d)
 
854
#define IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c)          (p)->lpVtbl->EnumPlayersAndGroups(p,a,b,c)
 
855
#define IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d)            (p)->lpVtbl->EnumGroupMembers(p,a,b,c,d)
 
856
#define IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d)                 (p)->lpVtbl->SetPeerInfo(p,a,b,c,d)
 
857
#define IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d)                 (p)->lpVtbl->GetPeerInfo(p,a,b,c,d)
 
858
#define IDirectPlay8Peer_GetPeerAddress(p,a,b,c)                (p)->lpVtbl->GetPeerAddress(p,a,b,c)
 
859
#define IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c)         (p)->lpVtbl->GetLocalHostAddresses(p,a,b,c)
 
860
#define IDirectPlay8Peer_Close(p,a)                             (p)->lpVtbl->Close(p,a)
 
861
#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->lpVtbl->EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)
 
862
#define IDirectPlay8Peer_DestroyPeer(p,a,b,c,d)                 (p)->lpVtbl->DestroyPeer(p,a,b,c,d)
 
863
#define IDirectPlay8Peer_ReturnBuffer(p,a,b)                    (p)->lpVtbl->ReturnBuffer(p,a,b)
 
864
#define IDirectPlay8Peer_GetPlayerContext(p,a,b,c)              (p)->lpVtbl->GetPlayerContext(p,a,b,c)
 
865
#define IDirectPlay8Peer_GetGroupContext(p,a,b,c)               (p)->lpVtbl->GetGroupContext(p,a,b,c)
 
866
#define IDirectPlay8Peer_GetCaps(p,a,b)                         (p)->lpVtbl->GetCaps(p,a,b)
 
867
#define IDirectPlay8Peer_SetCaps(p,a,b)                         (p)->lpVtbl->SetCaps(p,a,b)
 
868
#define IDirectPlay8Peer_SetSPCaps(p,a,b,c)                     (p)->lpVtbl->SetSPCaps(p,a,b,c)
 
869
#define IDirectPlay8Peer_GetSPCaps(p,a,b,c)                     (p)->lpVtbl->GetSPCaps(p,a,b,c)
 
870
#define IDirectPlay8Peer_GetConnectionInfo(p,a,b,c)             (p)->lpVtbl->GetConnectionInfo(p,a,b,c)
 
871
#define IDirectPlay8Peer_RegisterLobby(p,a,b,c)                 (p)->lpVtbl->RegisterLobby(p,a,b,c)
 
872
#define IDirectPlay8Peer_TerminateSession(p,a,b,c)              (p)->lpVtbl->TerminateSession(p,a,b,c)
 
873
#else
 
874
/*** IUnknown methods ***/
 
875
#define IDirectPlay8Peer_QueryInterface(p,a,b)                  (p)->QueryInterface(a,b)
 
876
#define IDirectPlay8Peer_AddRef(p)                              (p)->AddRef()
 
877
#define IDirectPlay8Peer_Release(p)                             (p)->Release()
 
878
/*** IDirectPlay8Peer methods ***/
 
879
#define IDirectPlay8Peer_Initialize(p,a,b,c)                    (p)->Initialize(a,b,c)
 
880
#define IDirectPlay8Peer_EnumServiceProviders(p,a,b,c,d,e,f)    (p)->EnumServiceProviders(a,b,c,d,e,f)
 
881
#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k)
 
882
#define IDirectPlay8Peer_CancelAsyncOperation(p,a,b)            (p)->CancelAsyncOperation(a,b)
 
883
#define IDirectPlay8Peer_Connect(p,a,b,c,d,e,f,g,h,i,j,k)       (p)->Connect(a,b,c,d,e,f,g,h,i,j,k)
 
884
#define IDirectPlay8Peer_SendTo(p,a,b,c,d,e,f,g)                (p)->SendTo(a,b,c,d,e,f,g)
 
885
#define IDirectPlay8Peer_GetSendQueueInfo(p,a,b,c,d)            (p)->GetSendQueueInfo(a,b,c,d)
 
886
#define IDirectPlay8Peer_Host(p,a,b,c,d,e,f,g)                  (p)->Host(a,b,c,d,e,f,g)
 
887
#define IDirectPlay8Peer_GetApplicationDesc(p,a,b,c)            (p)->GetApplicationDesc(a,b,c)
 
888
#define IDirectPlay8Peer_SetApplicationDesc(p,a,b)              (p)->SetApplicationDesc(a,b)
 
889
#define IDirectPlay8Peer_CreateGroup(p,a,b,c,d,e)               (p)->CreateGroup(a,b,c,d,e)
 
890
#define IDirectPlay8Peer_DestroyGroup(p,a,b,c,d)                (p)->DestroyGroup(a,b,c,d)
 
891
#define IDirectPlay8Peer_AddPlayerToGroup(p,a,b,c,d,e)          (p)->AddPlayerToGroup(a,b,c,d,e)
 
892
#define IDirectPlay8Peer_RemovePlayerFromGroup(p,a,b,c,d,e)     (p)->RemovePlayerFromGroup(a,b,c,d,e)
 
893
#define IDirectPlay8Peer_SetGroupInfo(p,a,b,c,d,e)              (p)->SetGroupInfo(a,b,c,d,e)
 
894
#define IDirectPlay8Peer_GetGroupInfo(p,a,b,c,d)                (p)->GetGroupInfo(a,b,c,d)
 
895
#define IDirectPlay8Peer_EnumPlayersAndGroups(p,a,b,c)          (p)->EnumPlayersAndGroups(a,b,c)
 
896
#define IDirectPlay8Peer_EnumGroupMembers(p,a,b,c,d)            (p)->EnumGroupMembers(a,b,c,d)
 
897
#define IDirectPlay8Peer_SetPeerInfo(p,a,b,c,d)                 (p)->SetPeerInfo(a,b,c,d)
 
898
#define IDirectPlay8Peer_GetPeerInfo(p,a,b,c,d)                 (p)->GetPeerInfo(a,b,c,d)
 
899
#define IDirectPlay8Peer_GetPeerAddress(p,a,b,c)                (p)->GetPeerAddress(a,b,c)
 
900
#define IDirectPlay8Peer_GetLocalHostAddresses(p,a,b,c)         (p)->GetLocalHostAddresses(a,b,c)
 
901
#define IDirectPlay8Peer_Close(p,a)                             (p)->Close(a)
 
902
#define IDirectPlay8Peer_EnumHosts(p,a,b,c,d,e,f,g,h,i,j,k)     (p)->EnumHosts(a,b,c,d,e,f,g,h,i,j,k)
 
903
#define IDirectPlay8Peer_DestroyPeer(p,a,b,c,d)                 (p)->DestroyPeer(a,b,c,d)
 
904
#define IDirectPlay8Peer_ReturnBuffer(p,a,b)                    (p)->ReturnBuffer(a,b)
 
905
#define IDirectPlay8Peer_GetPlayerContext(p,a,b,c)              (p)->GetPlayerContext(a,b,c)
 
906
#define IDirectPlay8Peer_GetGroupContext(p,a,b,c)               (p)->GetGroupContext(a,b,c)
 
907
#define IDirectPlay8Peer_GetCaps(p,a,b)                         (p)->GetCaps(a,b)
 
908
#define IDirectPlay8Peer_SetCaps(p,a,b)                         (p)->SetCaps(a,b)
 
909
#define IDirectPlay8Peer_SetSPCaps(p,a,b,c)                     (p)->SetSPCaps(a,b,c)
 
910
#define IDirectPlay8Peer_GetSPCaps(p,a,b,c)                     (p)->GetSPCaps(a,b,c)
 
911
#define IDirectPlay8Peer_GetConnectionInfo(p,a,b,c)             (p)->GetConnectionInfo(a,b,c)
 
912
#define IDirectPlay8Peer_RegisterLobby(p,a,b,c)                 (p)->RegisterLobby(a,b,c)
 
913
#define IDirectPlay8Peer_TerminateSession(p,a,b,c)              (p)->TerminateSession(a,b,c)
 
914
#endif
 
915
 
 
916
/*****************************************************************************
 
917
 * IDirectPlay8ThreadPool interface
 
918
 */
 
919
#define INTERFACE IDirectPlay8ThreadPool
 
920
DECLARE_INTERFACE_(IDirectPlay8ThreadPool,IUnknown)
 
921
{
 
922
    /*** IUnknown methods ***/
 
923
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
 
924
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
 
925
    STDMETHOD_(ULONG,Release)(THIS) PURE;
 
926
    /*** IDirectPlay8ThreadPool methods ***/
 
927
    STDMETHOD(Initialize)(THIS_ PVOID pvUserContext, PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags) PURE;
 
928
    STDMETHOD(Close)(THIS_ DWORD dwFlags) PURE;
 
929
    STDMETHOD(GetThreadCount)(THIS_ DWORD dwProcessorNum, DWORD* pdwNumThreads, DWORD dwFlags) PURE;
 
930
    STDMETHOD(SetThreadCount)(THIS_ DWORD dwProcessorNum, DWORD dwNumThreads, DWORD dwFlags) PURE;
 
931
    STDMETHOD(DoWork)(THIS_ DWORD dwAllowedTimeSlice, DWORD dwFlags) PURE;
 
932
};
 
933
#undef INTERFACE
 
934
 
 
935
#if !defined(__cplusplus) || defined(CINTERFACE)
 
936
/*** IUnknown methods ***/
 
937
#define IDirectPlay8ThreadPool_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
 
938
#define IDirectPlay8ThreadPool_AddRef(p)                              (p)->lpVtbl->AddRef(p)
 
939
#define IDirectPlay8ThreadPool_Release(p)                             (p)->lpVtbl->Release(p)
 
940
/*** IDirectPlay8ThreadPool methods ***/
 
941
#define IDirectPlay8ThreadPool_Initialize(p,a,b,c)                    (p)->lpVtbl->Initialize(p,a,b,c)
 
942
#define IDirectPlay8ThreadPool_Close(p,a)                             (p)->lpVtbl->Close(p,a)
 
943
#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c)                (p)->lpVtbl->GetThreadCount(p,a,b,c)
 
944
#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c)                (p)->lpVtbl->SetThreadCount(p,a,b,c)
 
945
#define IDirectPlay8ThreadPool_DoWork(p,a,b)                          (p)->lpVtbl->DoWork(p,a,b)
 
946
#else
 
947
/*** IUnknown methods ***/
 
948
#define IDirectPlay8ThreadPool_QueryInterface(p,a,b)                  (p)->QueryInterface(a,b)
 
949
#define IDirectPlay8ThreadPool_AddRef(p)                              (p)->AddRef()
 
950
#define IDirectPlay8ThreadPool_Release(p)                             (p)->Release()
 
951
/*** IDirectPlay8ThreadPool methods ***/
 
952
#define IDirectPlay8ThreadPool_Initialize(p,a,b,c)                    (p)->Initialize(a,b,c)
 
953
#define IDirectPlay8ThreadPool_Close(p,a)                             (p)->Close(a)
 
954
#define IDirectPlay8ThreadPool_GetThreadCount(p,a,b,c)                (p)->GetThreadCount(a,b,c)
 
955
#define IDirectPlay8ThreadPool_SetThreadCount(p,a,b,c)                (p)->SetThreadCount(a,b,c)
 
956
#define IDirectPlay8ThreadPool_DoWork(p,a,b)                          (p)->DoWork(a,b)
 
957
#endif
 
958
 
 
959
/*****************************************************************************
 
960
 * IDirectPlay8NATResolver interface
 
961
 */
 
962
#define INTERFACE IDirectPlay8NATResolver
 
963
DECLARE_INTERFACE_(IDirectPlay8NATResolver,IUnknown)
 
964
{
 
965
    /*** IUnknown methods ***/
 
966
    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
 
967
    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
 
968
    STDMETHOD_(ULONG,Release)(THIS) PURE;
 
969
    /*** IDirectPlay8NATResolver methods ***/
 
970
    STDMETHOD(Initialize)(THIS_ PVOID pvUserContext, PFNDPNMESSAGEHANDLER pfn, DWORD dwFlags) PURE;
 
971
    STDMETHOD(Start)(THIS_ IDirectPlay8Address** ppDevices, DWORD dwNumDevices, DWORD dwFlags) PURE;
 
972
    STDMETHOD(Close)(THIS_ DWORD dwFlags) PURE;
 
973
    STDMETHOD(EnumDevices)(THIS_ DPN_SERVICE_PROVIDER_INFO* pSPInfoBuffer, PDWORD pdwBufferSize, PDWORD pdwNumDevices, DWORD dwFlags) PURE;
 
974
    STDMETHOD(GetAddresses)(THIS_ IDirectPlay8Address** ppAddresses, DWORD* pdwNumAddresses, DWORD dwFlags) PURE;
 
975
};
 
976
#undef INTERFACE
 
977
 
 
978
#if !defined(__cplusplus) || defined(CINTERFACE)
 
979
/*** IUnknown methods ***/
 
980
#define IDirectPlay8NATResolver_QueryInterface(p,a,b)                  (p)->lpVtbl->QueryInterface(p,a,b)
 
981
#define IDirectPlay8NATResolver_AddRef(p)                              (p)->lpVtbl->AddRef(p)
 
982
#define IDirectPlay8NATResolver_Release(p)                             (p)->lpVtbl->Release(p)
 
983
/*** IDirectPlay8NATResolver methods ***/
 
984
#define IDirectPlay8NATResolver_Initialize(p,a,b,c)                    (p)->lpVtbl->Initialize(p,a,b,c)
 
985
#define IDirectPlay8NATResolver_Start(p,a,b,c)                         (p)->lpVtbl->Start(p,a,b,c)
 
986
#define IDirectPlay8NATResolver_Close(p,a)                             (p)->lpVtbl->Close(p,a)
 
987
#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d)                 (p)->lpVtbl->EnumDevices(p,a,b,c,d)
 
988
#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c)                  (p)->lpVtbl->GetAddresses(p,a,b,c)
 
989
#else
 
990
/*** IUnknown methods ***/
 
991
#define IDirectPlay8NATResolver_QueryInterface(p,a,b)                  (p)->QueryInterface(a,b)
 
992
#define IDirectPlay8NATResolver_AddRef(p)                              (p)->AddRef()
 
993
#define IDirectPlay8NATResolver_Release(p)                             (p)->Release()
 
994
/*** IDirectPlay8NATResolver methods ***/
 
995
#define IDirectPlay8NATResolver_Initialize(p,a,b,c)                    (p)->Initialize(a,b,c)
 
996
#define IDirectPlay8NATResolver_Start(p,a,b,c)                         (p)->Start(a,b,c)
 
997
#define IDirectPlay8NATResolver_Close(p,a)                             (p)->Close(a)
 
998
#define IDirectPlay8NATResolver_EnumDevices(p,a,b,c,d)                 (p)->EnumDevices(a,b,c,d)
 
999
#define IDirectPlay8NATResolver_GetAddresses(p,a,b,c)                  (p)->GetAddresses(a,b,c)
 
1000
#endif
 
1001
 
 
1002
/* Export functions */
 
1003
 
 
1004
HRESULT WINAPI DirectPlay8Create(const CLSID* pcIID, LPVOID* ppvInterface, IUnknown* pUnknown);
 
1005
 
 
1006
#ifdef __cplusplus
 
1007
}
 
1008
#endif
 
1009
 
 
1010
#endif