Home | History | Annotate | Download | only in include
      1 #include <_mingw_unicode.h>
      2 #undef INTERFACE
      3 /*
      4  * Copyright (C) 1999 Francois Gouget
      5  * Copyright (C) 1999 Peter Hunnisett
      6  *
      7  * This library is free software; you can redistribute it and/or
      8  * modify it under the terms of the GNU Lesser General Public
      9  * License as published by the Free Software Foundation; either
     10  * version 2.1 of the License, or (at your option) any later version.
     11  *
     12  * This library is distributed in the hope that it will be useful,
     13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     15  * Lesser General Public License for more details.
     16  *
     17  * You should have received a copy of the GNU Lesser General Public
     18  * License along with this library; if not, write to the Free Software
     19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     20  */
     21 
     22 #ifndef __WINE_DPLOBBY_H
     23 #define __WINE_DPLOBBY_H
     24 
     25 #include <dplay.h>
     26 
     27 #ifdef __cplusplus
     28 extern "C" {
     29 #endif /* defined(__cplusplus) */
     30 
     31 /*****************************************************************************
     32  * Predeclare the interfaces
     33  */
     34 DEFINE_GUID(CLSID_DirectPlayLobby, 0x2fe8f810, 0xb2a5, 0x11d0, 0xa7, 0x87, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
     35 
     36 DEFINE_GUID(IID_IDirectPlayLobby, 0xaf465c71, 0x9588, 0x11cf, 0xa0, 0x20, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac);
     37 typedef struct IDirectPlayLobby *LPDIRECTPLAYLOBBY;
     38 
     39 DEFINE_GUID(IID_IDirectPlayLobbyA, 0x26c66a70, 0xb367, 0x11cf, 0xa0, 0x24, 0x0, 0xaa, 0x0, 0x61, 0x57, 0xac);
     40 typedef struct IDirectPlayLobby IDirectPlayLobbyA,*LPDIRECTPLAYLOBBYA;
     41 
     42 DEFINE_GUID(IID_IDirectPlayLobby2, 0x194c220, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
     43 typedef struct IDirectPlayLobby2 *LPDIRECTPLAYLOBBY2;
     44 
     45 DEFINE_GUID(IID_IDirectPlayLobby2A, 0x1bb4af80, 0xa303, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
     46 typedef struct IDirectPlayLobby2 IDirectPlayLobby2A, *LPDIRECTPLAYLOBBY2A;
     47 
     48 DEFINE_GUID(IID_IDirectPlayLobby3, 0x2db72490, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
     49 typedef struct IDirectPlayLobby3 *LPDIRECTPLAYLOBBY3;
     50 
     51 DEFINE_GUID(IID_IDirectPlayLobby3A, 0x2db72491, 0x652c, 0x11d1, 0xa7, 0xa8, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
     52 typedef struct IDirectPlayLobby3 IDirectPlayLobby3A, *LPDIRECTPLAYLOBBY3A;
     53 
     54 
     55 /*****************************************************************************
     56  * DirectPlayLobby Property GUIDs used in lobby messages
     57  */
     58 
     59 /* DPLPROPERTY_MessagesSupported {762CCDA1-D916-11d0-BA39-00C04FD7ED67}.
     60  * Purpose: Request if the lobby supports standard (?).
     61  * Response: Answer is a WINBOOL. TRUE if supports the standard (?) and FALSE otherwise. Of course, it might not respond at all.
     62  */
     63 DEFINE_GUID(DPLPROPERTY_MessagesSupported, 0x762ccda1, 0xd916, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
     64 
     65 /* DPLPROPERTY_LobbyGuid {F56920A0-D218-11d0-BA39-00C04FD7ED67}.
     66  * Purpose: Request the GUID that identifies the lobby version that the application is communicating with.
     67  * Response: The GUID which identifies the lobby version
     68  */
     69 DEFINE_GUID(DPLPROPERTY_LobbyGuid, 0xf56920a0, 0xd218, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
     70 
     71 /* DPLPROPERTY_PlayerGuid {B4319322-D20D-11d0-BA39-00C04FD7ED67}
     72  * Purpose: Request the GUID that identifies the player for this particular machine.
     73  * Response: DPLDATA_PLAYERDATA structure.
     74  */
     75 DEFINE_GUID(DPLPROPERTY_PlayerGuid, 0xb4319322, 0xd20d, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
     76 
     77 /* DPLPROPERTY_PlayerScore {48784000-D219-11d0-BA39-00C04FD7ED67}
     78  * Purpose: Used to send a score of a player to the lobby. The format is an array of long integers.
     79  * Response: I don't think there is one.
     80  */
     81 DEFINE_GUID(DPLPROPERTY_PlayerScore, 0x48784000, 0xd219, 0x11d0, 0xba, 0x39, 0x0, 0xc0, 0x4f, 0xd7, 0xed, 0x67);
     82 
     83 
     84 
     85 /*****************************************************************************
     86  * LOBBY structures associated with GUID messages
     87  */
     88 
     89 typedef struct tagDPLDATA_PLAYERGUID
     90 {
     91         GUID    guidPlayer;
     92         DWORD   dwPlayerFlags;
     93 } DPLDATA_PLAYERGUID, *LPDPLDATA_PLAYERGUID;
     94 
     95 typedef struct tagDPLDATA_PLAYERSCORE
     96 {
     97         DWORD   dwScoreCount;
     98         LONG    Score[1];
     99 } DPLDATA_PLAYERSCORE, *LPDPLDATA_PLAYERSCORE;
    100 
    101 
    102 /*****************************************************************************
    103  * LOBBY messages and message data structures.
    104  *
    105  * System messages can be identified by dwMessageFlags having a value of DPLMSG_SYSTEM
    106  * after a call to ReceiveLobbyMessage.
    107  *
    108  * Standard messages can be identified by dwMessageFlags having a value of DPLMSG_STANDARD
    109  * after a call to ReceiveLobbyMessage.
    110  */
    111 
    112 /* DPLobby1 definition required for backwards compatibility */
    113 #define DPLMSG_SYSTEM                                   0x00000001
    114 #define DPLMSG_STANDARD                                 0x00000002
    115 #define DPLAD_SYSTEM          DPLMSG_SYSTEM
    116 
    117 
    118 /* System messages  - dwType field for messages */
    119 #define DPLSYS_CONNECTIONSETTINGSREAD   0x00000001
    120 #define DPLSYS_DPLAYCONNECTFAILED       0x00000002
    121 #define DPLSYS_DPLAYCONNECTSUCCEEDED    0x00000003
    122 #define DPLSYS_APPTERMINATED            0x00000004
    123 #define DPLSYS_SETPROPERTY              0x00000005
    124 #define DPLSYS_SETPROPERTYRESPONSE      0x00000006
    125 #define DPLSYS_GETPROPERTY              0x00000007
    126 #define DPLSYS_GETPROPERTYRESPONSE      0x00000008
    127 #define DPLSYS_NEWSESSIONHOST           0x00000009
    128 #define DPLSYS_NEWCONNECTIONSETTINGS    0x0000000A
    129 
    130 
    131 
    132 /* Used to identify the message type */
    133 typedef struct tagDPLMSG_GENERIC
    134 {
    135     DWORD       dwType;         /* Message type */
    136 } DPLMSG_GENERIC, *LPDPLMSG_GENERIC;
    137 
    138 /* Generic format for system messages - see above */
    139 typedef struct tagDPLMSG_SYSTEMMESSAGE
    140 {
    141     DWORD       dwType;         /* Message type */
    142     GUID        guidInstance;   /* Instance GUID of the dplay session the message corresponds to */
    143 } DPLMSG_SYSTEMMESSAGE, *LPDPLMSG_SYSTEMMESSAGE;
    144 
    145 /* Generic message to set a property - see property GUIDs above */
    146 typedef struct tagDPLMSG_SETPROPERTY
    147 {
    148         DWORD   dwType;              /* Message type */
    149         DWORD   dwRequestID;         /* Request ID (DPL_NOCONFIRMATION if no confirmation desired) */
    150         GUID    guidPlayer;          /* Player GUID */
    151         GUID    guidPropertyTag;     /* Property GUID */
    152         DWORD   dwDataSize;          /* Size of data */
    153         DWORD   dwPropertyData[1];   /* Buffer containing data */
    154 } DPLMSG_SETPROPERTY, *LPDPLMSG_SETPROPERTY;
    155 
    156 #define DPL_NOCONFIRMATION      0
    157 
    158 /* Reply to DPLMSG_SETPROPERTY */
    159 typedef struct tagDPLMSG_SETPROPERTYRESPONSE
    160 {
    161         DWORD   dwType;              /* Message type */
    162         DWORD   dwRequestID;         /* Request ID */
    163         GUID    guidPlayer;          /* Player GUID */
    164         GUID    guidPropertyTag;     /* Property GUID */
    165         HRESULT hr;                  /* Return Code */
    166 } DPLMSG_SETPROPERTYRESPONSE, *LPDPLMSG_SETPROPERTYRESPONSE;
    167 
    168 /* Request to get the present value of a property */
    169 typedef struct tagDPLMSG_GETPROPERTY
    170 {
    171         DWORD   dwType;           /* Message type */
    172         DWORD   dwRequestID;      /* Request ID */
    173         GUID    guidPlayer;       /* Player GUID */
    174         GUID    guidPropertyTag;  /* Property GUID */
    175 } DPLMSG_GETPROPERTY, *LPDPLMSG_GETPROPERTY;
    176 
    177 /* Response to a request to get the present value of a property */
    178 typedef struct tagDPLMSG_GETPROPERTYRESPONSE
    179 {
    180         DWORD   dwType;              /* Message type */
    181         DWORD   dwRequestID;         /* Request ID */
    182         GUID    guidPlayer;          /* Player GUID */
    183         GUID    guidPropertyTag;     /* Property GUID */
    184         HRESULT hr;                  /* Return Code */
    185         DWORD   dwDataSize;          /* Size of data */
    186         DWORD   dwPropertyData[1];   /* Buffer containing data */
    187 } DPLMSG_GETPROPERTYRESPONSE, *LPDPLMSG_GETPROPERTYRESPONSE;
    188 
    189 /* Standard message in response to a session host migration to a new client */
    190 typedef struct tagDPLMSG_NEWSESSIONHOST
    191 {
    192     DWORD   dwType;        /* Message type */
    193     GUID    guidInstance;  /* GUID Instance of the session */
    194 } DPLMSG_NEWSESSIONHOST, *LPDPLMSG_NEWSESSIONHOST;
    195 
    196 /*****************************************************************************
    197  * DirectPlay Address ID's
    198  * A DirectPlay address is composed of multiple data chunks, each associated with
    199  * a GUID to give significance to the type of data. All chunks have an associated
    200  * size so that unknown chunks can be ignored for backwards compatibility!
    201  * EnumAddresses function is used to parse the address data chunks.
    202  */
    203 
    204 /* DPAID_TotalSize {1318F560-912C-11d0-9DAA-00A0C90A43CB}
    205  * Chunk purpose: Chunk is a DWORD containing the size of the entire DPADDRESS struct
    206  */
    207 DEFINE_GUID(DPAID_TotalSize, 0x1318f560, 0x912c, 0x11d0, 0x9d, 0xaa, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
    208 
    209 /* DPAID_ServiceProvider {07D916C0-E0AF-11cf-9C4E-00A0C905425E}
    210  * Chunk purpose: Chunk is a GUID indicated what service provider created the chunk.
    211  */
    212 DEFINE_GUID(DPAID_ServiceProvider, 0x7d916c0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    213 
    214 /* DPAID_LobbyProvider {59B95640-9667-11d0-A77D-0000F803ABFC}
    215  * Chunk purpose: Chunk is a GUID indicating what lobby provider created the chunk.
    216  */
    217 DEFINE_GUID(DPAID_LobbyProvider, 0x59b95640, 0x9667, 0x11d0, 0xa7, 0x7d, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
    218 
    219 /* DPAID_Phone  {78EC89A0-E0AF-11cf-9C4E-00A0C905425E} -- ANSI
    220  * DPAID_PhoneW {BA5A7A70-9DBF-11d0-9CC1-00A0C905425E} -- UNICODE
    221  * Chunk purpose: Chunk is a phone number in ANSI or UNICODE format
    222  */
    223 DEFINE_GUID(DPAID_Phone, 0x78ec89a0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    224 DEFINE_GUID(DPAID_PhoneW, 0xba5a7a70, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    225 
    226 /* DPAID_Modem  {F6DCC200-A2FE-11d0-9C4F-00A0C905425E} -- ANSI
    227  * DPAID_ModemW {01FD92E0-A2FF-11d0-9C4F-00A0C905425E} -- UNICODE
    228  * Chunk purpose: Chunk is a modem name registered with TAPI
    229  */
    230 DEFINE_GUID(DPAID_Modem, 0xf6dcc200, 0xa2fe, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    231 DEFINE_GUID(DPAID_ModemW, 0x1fd92e0, 0xa2ff, 0x11d0, 0x9c, 0x4f, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    232 
    233 /* DPAID_INet  {C4A54DA0-E0AF-11cf-9C4E-00A0C905425E} -- ANSI
    234  * DPAID_INetW {E63232A0-9DBF-11d0-9CC1-00A0C905425E} -- UNICODE
    235  * Chunk purpose: Chunk is a string containing a TCP/IP host name or IP address
    236  */
    237 DEFINE_GUID(DPAID_INet, 0xc4a54da0, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    238 DEFINE_GUID(DPAID_INetW, 0xe63232a0, 0x9dbf, 0x11d0, 0x9c, 0xc1, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    239 
    240 /* DPAID_INetPort {E4524541-8EA5-11d1-8A96-006097B01411}
    241  * Chunk purpose: Chunk is a port number used for creating TCP and UDP sockets. (WORD)
    242  */
    243 DEFINE_GUID(DPAID_INetPort, 0xe4524541, 0x8ea5, 0x11d1, 0x8a, 0x96, 0x0, 0x60, 0x97, 0xb0, 0x14, 0x11);
    244 
    245 /* DPAID_ComPort {F2F0CE00-E0AF-11cf-9C4E-00A0C905425E}
    246  * Chunk purpose: Chunk contains the description of a serial port.
    247  */
    248 DEFINE_GUID(DPAID_ComPort, 0xf2f0ce00, 0xe0af, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
    249 
    250 
    251 /* Header block for address data elements */
    252 typedef struct tagDPADDRESS
    253 {
    254     GUID                guidDataType;
    255     DWORD               dwDataSize;
    256 } DPADDRESS, *LPDPADDRESS;
    257 
    258 
    259 /* Used for specification of a communication port. Baud rate, stop bits and
    260  * parity bits can be found in winbase.h. These are flow control constants only.
    261  */
    262 #define DPCPA_NOFLOW        0           /* no flow control */
    263 #define DPCPA_XONXOFFFLOW   1           /* software flow control */
    264 #define DPCPA_RTSFLOW       2           /* hardware flow control with RTS */
    265 #define DPCPA_DTRFLOW       3           /* hardware flow control with DTR */
    266 #define DPCPA_RTSDTRFLOW    4           /* hardware flow control with RTS and DTR */
    267 
    268 typedef struct tagDPCOMPORTADDRESS
    269 {
    270     DWORD   dwComPort;                  /* COM port to use (1-4) */
    271     DWORD   dwBaudRate;                 /* baud rate (100-256k) */
    272     DWORD   dwStopBits;                 /* no. stop bits (1-2) */
    273     DWORD   dwParity;                   /* parity (none, odd, even, mark) */
    274     DWORD   dwFlowControl;              /* flow control (none, xon/xoff, rts, dtr) */
    275 } DPCOMPORTADDRESS, *LPDPCOMPORTADDRESS;
    276 
    277 
    278 
    279 /****************************************************************************
    280  * Miscellaneous
    281  */
    282 
    283 typedef struct tagDPLAPPINFO
    284 {
    285     DWORD       dwSize;
    286     GUID        guidApplication;
    287 
    288     union
    289     {
    290         LPSTR   lpszAppNameA;
    291         LPWSTR  lpszAppName;
    292     } DUMMYUNIONNAME;
    293 
    294 } DPLAPPINFO, *LPDPLAPPINFO;
    295 typedef const DPLAPPINFO *LPCDPLAPPINFO;
    296 
    297 typedef struct DPCOMPOUNDADDRESSELEMENT
    298 {
    299     GUID    guidDataType;
    300     DWORD   dwDataSize;
    301     LPVOID  lpData;
    302 } DPCOMPOUNDADDRESSELEMENT, *LPDPCOMPOUNDADDRESSELEMENT;
    303 typedef const DPCOMPOUNDADDRESSELEMENT *LPCDPCOMPOUNDADDRESSELEMENT;
    304 
    305 typedef struct tagDPAPPLICATIONDESC
    306 {
    307     DWORD       dwSize;
    308     DWORD       dwFlags;
    309 
    310     union
    311     {
    312         LPSTR       lpszApplicationNameA;
    313         LPWSTR      lpszApplicationName;
    314     } DUMMYUNIONNAME1;
    315 
    316     GUID        guidApplication;
    317 
    318     union
    319     {
    320         LPSTR       lpszFilenameA;
    321         LPWSTR      lpszFilename;
    322     } DUMMYUNIONNAME2;
    323 
    324     union
    325     {
    326         LPSTR       lpszCommandLineA;
    327         LPWSTR      lpszCommandLine;
    328     } DUMMYUNIONNAME3;
    329 
    330     union
    331     {
    332         LPSTR       lpszPathA;
    333         LPWSTR      lpszPath;
    334     } DUMMYUNIONNAME4;
    335 
    336     union
    337     {
    338         LPSTR       lpszCurrentDirectoryA;
    339         LPWSTR      lpszCurrentDirectory;
    340     } DUMMYUNIONNAME5;
    341 
    342     LPSTR       lpszDescriptionA;
    343     LPWSTR      lpszDescriptionW;
    344 
    345 } DPAPPLICATIONDESC, *LPDPAPPLICATIONDESC;
    346 
    347 
    348 
    349 extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY*,  IUnknown*, LPVOID, DWORD );
    350 extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA*, IUnknown*, LPVOID, DWORD );
    351 #define DirectPlayLobbyCreate __MINGW_NAME_AW(DirectPlayLobbyCreate)
    352 
    353 
    354 typedef WINBOOL (CALLBACK *LPDPENUMADDRESSCALLBACK)(
    355     REFGUID         guidDataType,
    356     DWORD           dwDataSize,
    357     LPCVOID         lpData,
    358     LPVOID          lpContext );
    359 
    360 typedef WINBOOL (CALLBACK *LPDPLENUMADDRESSTYPESCALLBACK)(
    361     REFGUID         guidDataType,
    362     LPVOID          lpContext,
    363     DWORD           dwFlags );
    364 
    365 typedef WINBOOL (CALLBACK *LPDPLENUMLOCALAPPLICATIONSCALLBACK)(
    366     LPCDPLAPPINFO   lpAppInfo,
    367     LPVOID          lpContext,
    368     DWORD           dwFlags );
    369 
    370 /*****************************************************************************
    371  * IDirectPlayLobby and IDirectPlayLobbyA interface
    372  */
    373 #define INTERFACE IDirectPlayLobby
    374 DECLARE_INTERFACE_(IDirectPlayLobby,IUnknown)
    375 {
    376     /*** IUnknown methods ***/
    377     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    378     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    379     STDMETHOD_(ULONG,Release)(THIS) PURE;
    380     /*** IDirectPlayLobby methods ***/
    381     STDMETHOD(Connect)(THIS_ DWORD, LPDIRECTPLAY2*, IUnknown*) PURE;
    382     STDMETHOD(CreateAddress)(THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
    383     STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
    384     STDMETHOD(EnumAddressTypes)(THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
    385     STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
    386     STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
    387     STDMETHOD(ReceiveLobbyMessage)(THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
    388     STDMETHOD(RunApplication)(THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE;
    389     STDMETHOD(SendLobbyMessage)(THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
    390     STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
    391     STDMETHOD(SetLobbyMessageEvent)(THIS_ DWORD, DWORD, HANDLE) PURE;
    392 };
    393 #undef INTERFACE
    394 
    395 /*****************************************************************************
    396  * IDirectPlayLobby2 and IDirectPlayLobby2A interface
    397  */
    398 #define INTERFACE IDirectPlayLobby2
    399 DECLARE_INTERFACE_(IDirectPlayLobby2,IDirectPlayLobby)
    400 {
    401     /*** IUnknown methods ***/
    402     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    403     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    404     STDMETHOD_(ULONG,Release)(THIS) PURE;
    405     /*** IDirectPlayLobby methods ***/
    406     STDMETHOD(Connect)(THIS_ DWORD, LPDIRECTPLAY2*, IUnknown*) PURE;
    407     STDMETHOD(CreateAddress)(THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
    408     STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
    409     STDMETHOD(EnumAddressTypes)(THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
    410     STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
    411     STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
    412     STDMETHOD(ReceiveLobbyMessage)(THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
    413     STDMETHOD(RunApplication)(THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE;
    414     STDMETHOD(SendLobbyMessage)(THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
    415     STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
    416     STDMETHOD(SetLobbyMessageEvent)(THIS_ DWORD, DWORD, HANDLE) PURE;
    417     /*** IDirectPlayLobby2 methods ***/
    418     STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT, DWORD, LPVOID, LPDWORD) PURE;
    419 };
    420 #undef INTERFACE
    421 
    422 /*****************************************************************************
    423  * IDirectPlayLobby3 and IDirectPlayLobby3A interface
    424  */
    425 #define INTERFACE IDirectPlayLobby3
    426 DECLARE_INTERFACE_(IDirectPlayLobby3,IDirectPlayLobby2)
    427 {
    428     /*** IUnknown methods ***/
    429     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    430     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    431     STDMETHOD_(ULONG,Release)(THIS) PURE;
    432     /*** IDirectPlayLobby methods ***/
    433     STDMETHOD(Connect)(THIS_ DWORD, LPDIRECTPLAY2*, IUnknown*) PURE;
    434     STDMETHOD(CreateAddress)(THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
    435     STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
    436     STDMETHOD(EnumAddressTypes)(THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
    437     STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
    438     STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
    439     STDMETHOD(ReceiveLobbyMessage)(THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
    440     STDMETHOD(RunApplication)(THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE) PURE;
    441     STDMETHOD(SendLobbyMessage)(THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
    442     STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
    443     STDMETHOD(SetLobbyMessageEvent)(THIS_ DWORD, DWORD, HANDLE) PURE;
    444     /*** IDirectPlayLobby2 methods ***/
    445     STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT, DWORD, LPVOID, LPDWORD) PURE;
    446     /*** IDirectPlayLobby3 methods ***/
    447     STDMETHOD(ConnectEx)(THIS_ DWORD, REFIID, LPVOID *, IUnknown *) PURE;
    448     STDMETHOD(RegisterApplication)(THIS_ DWORD, LPDPAPPLICATIONDESC) PURE;
    449     STDMETHOD(UnregisterApplication)(THIS_ DWORD, REFGUID) PURE;
    450     STDMETHOD(WaitForConnectionSettings)(THIS_ DWORD) PURE;
    451 };
    452 #undef INTERFACE
    453 
    454 #if !defined(__cplusplus) || defined(CINTERFACE)
    455 /*** IUnknown methods ***/
    456 #define IDirectPlayLobby_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
    457 #define IDirectPlayLobby_AddRef(p)                          (p)->lpVtbl->AddRef(p)
    458 #define IDirectPlayLobby_Release(p)                         (p)->lpVtbl->Release(p)
    459 /*** IDirectPlayLobby methods ***/
    460 #define IDirectPlayLobby_Connect(p,a,b,c)                   (p)->lpVtbl->Connect(p,a,b,c)
    461 #define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f)       (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f)
    462 #define IDirectPlayLobby_EnumAddress(p,a,b,c,d)             (p)->lpVtbl->EnumAddress(p,a,b,c,d)
    463 #define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d)        (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d)
    464 #define IDirectPlayLobby_EnumLocalApplications(p,a,b,c)     (p)->lpVtbl->EnumLocalApplications(p,a,b,c)
    465 #define IDirectPlayLobby_GetConnectionSettings(p,a,b,c)     (p)->lpVtbl->GetConnectionSettings(p,a,b,c)
    466 #define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e)   (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e)
    467 #define IDirectPlayLobby_RunApplication(p,a,b,c,d)          (p)->lpVtbl->RunApplication(p,a,b,c,d)
    468 #define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d)        (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d)
    469 #define IDirectPlayLobby_SetConnectionSettings(p,a,b,c)     (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
    470 #define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c)      (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c)
    471 /*** IDirectPlayLobby2 methods ***/
    472 #define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d)   (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d)
    473 /*** IDirectPlayLobby3 methods ***/
    474 #define IDirectPlayLobby_ConnectEx(p,a,b,c,d)               (p)->lpVtbl->ConnectEx(p,a,b,c,d)
    475 #define IDirectPlayLobby_RegisterApplication(p,a,b)         (p)->lpVtbl->RegisterApplication(p,a,b)
    476 #define IDirectPlayLobby_UnregisterApplication(p,a,b)       (p)->lpVtbl->UnregisterApplication(p,a,b)
    477 #define IDirectPlayLobby_WaitForConnectionSettings(p,a)     (p)->lpVtbl->WaitForConnectionSettings(p,a)
    478 #else
    479 /*** IUnknown methods ***/
    480 #define IDirectPlayLobby_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
    481 #define IDirectPlayLobby_AddRef(p)                          (p)->AddRef()
    482 #define IDirectPlayLobby_Release(p)                         (p)->Release()
    483 /*** IDirectPlayLobby methods ***/
    484 #define IDirectPlayLobby_Connect(p,a,b,c)                   (p)->Connect(a,b,c)
    485 #define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f)       (p)->CreateAddress(a,b,c,d,e,f)
    486 #define IDirectPlayLobby_EnumAddress(p,a,b,c,d)             (p)->EnumAddress(a,b,c,d)
    487 #define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d)        (p)->EnumAddressTypes(a,b,c,d)
    488 #define IDirectPlayLobby_EnumLocalApplications(p,a,b,c)     (p)->EnumLocalApplications(a,b,c)
    489 #define IDirectPlayLobby_GetConnectionSettings(p,a,b,c)     (p)->GetConnectionSettings(a,b,c)
    490 #define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e)   (p)->ReceiveLobbyMessage(a,b,c,d,e)
    491 #define IDirectPlayLobby_RunApplication(p,a,b,c,d)          (p)->RunApplication(a,b,c,d)
    492 #define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d)        (p)->SendLobbyMessage(a,b,c,d)
    493 #define IDirectPlayLobby_SetConnectionSettings(p,a,b,c)     (p)->SetConnectionSettings(a,b,c)
    494 #define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c)      (p)->SetLobbyMessageEvent(a,b,c)
    495 /*** IDirectPlayLobby2 methods ***/
    496 #define IDirectPlayLobby_CreateCompoundAddress(p,a,b,c,d)   (p)->CreateCompoundAddress(a,b,c,d)
    497 /*** IDirectPlayLobby3 methods ***/
    498 #define IDirectPlayLobby_ConnectEx(p,a,b,c,d)               (p)->ConnectEx(a,b,c,d)
    499 #define IDirectPlayLobby_RegisterApplication(p,a,b)         (p)->RegisterApplication(a,b)
    500 #define IDirectPlayLobby_UnregisterApplication(p,a,b)       (p)->UnregisterApplication(a,b)
    501 #define IDirectPlayLobby_WaitForConnectionSettings(p,a)     (p)->WaitForConnectionSettings(a)
    502 #endif
    503 
    504 /* Used for WaitForConnectionSettings */
    505 #define DPLWAIT_CANCEL                  0x00000001
    506 
    507 #ifdef __cplusplus
    508 } /* extern "C" */
    509 #endif /* defined(__cplusplus) */
    510 
    511 #endif /* __WINE_DPLOBBY_H */
    512