1 #undef INTERFACE 2 /* 3 * Copyright (C) 2003-2005 Raphael Junqueira 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 18 */ 19 20 #ifndef __WINE_DPLOBBY8_H 21 #define __WINE_DPLOBBY8_H 22 23 #include <ole2.h> 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif /* defined(__cplusplus) */ 28 29 /***************************************************************************** 30 * DirectPlay8Lobby defines 31 */ 32 #define DPL_MSGID_LOBBY 0x8000 33 #define DPL_MSGID_RECEIVE (0x0001 | DPL_MSGID_LOBBY) 34 #define DPL_MSGID_CONNECT (0x0002 | DPL_MSGID_LOBBY) 35 #define DPL_MSGID_DISCONNECT (0x0003 | DPL_MSGID_LOBBY) 36 #define DPL_MSGID_SESSION_STATUS (0x0004 | DPL_MSGID_LOBBY) 37 #define DPL_MSGID_CONNECTION_SETTINGS (0x0005 | DPL_MSGID_LOBBY) 38 #define DPLHANDLE_ALLCONNECTIONS 0xFFFFFFFF 39 #define DPLSESSION_CONNECTED 0x0001 40 #define DPLSESSION_COULDNOTCONNECT 0x0002 41 #define DPLSESSION_DISCONNECTED 0x0003 42 #define DPLSESSION_TERMINATED 0x0004 43 #define DPLSESSION_HOSTMIGRATED 0x0005 44 #define DPLSESSION_HOSTMIGRATEDHERE 0x0006 45 #define DPLAVAILABLE_ALLOWMULTIPLECONNECT 0x0001 46 #define DPLCONNECT_LAUNCHNEW 0x0001 47 #define DPLCONNECT_LAUNCHNOTFOUND 0x0002 48 #define DPLCONNECTSETTINGS_HOST 0x0001 49 #define DPLINITIALIZE_DISABLEPARAMVAL 0x0001 50 51 /***************************************************************************** 52 * DirectPlay8Lobby structures Typedefs 53 */ 54 typedef struct _DPL_APPLICATION_INFO { 55 GUID guidApplication; 56 PWSTR pwszApplicationName; 57 DWORD dwNumRunning; 58 DWORD dwNumWaiting; 59 DWORD dwFlags; 60 } DPL_APPLICATION_INFO, *PDPL_APPLICATION_INFO; 61 62 typedef struct _DPL_CONNECTION_SETTINGS { 63 DWORD dwSize; 64 DWORD dwFlags; 65 DPN_APPLICATION_DESC dpnAppDesc; 66 IDirectPlay8Address* pdp8HostAddress; 67 IDirectPlay8Address** ppdp8DeviceAddresses; 68 DWORD cNumDeviceAddresses; 69 PWSTR pwszPlayerName; 70 } DPL_CONNECTION_SETTINGS, *PDPL_CONNECTION_SETTINGS; 71 72 typedef struct _DPL_CONNECT_INFO { 73 DWORD dwSize; 74 DWORD dwFlags; 75 GUID guidApplication; 76 PDPL_CONNECTION_SETTINGS pdplConnectionSettings; 77 PVOID pvLobbyConnectData; 78 DWORD dwLobbyConnectDataSize; 79 } DPL_CONNECT_INFO, *PDPL_CONNECT_INFO; 80 81 typedef struct _DPL_PROGRAM_DESC { 82 DWORD dwSize; 83 DWORD dwFlags; 84 GUID guidApplication; 85 PWSTR pwszApplicationName; 86 PWSTR pwszCommandLine; 87 PWSTR pwszCurrentDirectory; 88 PWSTR pwszDescription; 89 PWSTR pwszExecutableFilename; 90 PWSTR pwszExecutablePath; 91 PWSTR pwszLauncherFilename; 92 PWSTR pwszLauncherPath; 93 } DPL_PROGRAM_DESC, *PDPL_PROGRAM_DESC; 94 95 typedef struct _DPL_MESSAGE_CONNECT { 96 DWORD dwSize; 97 DPNHANDLE hConnectId; 98 PDPL_CONNECTION_SETTINGS pdplConnectionSettings; 99 PVOID pvLobbyConnectData; 100 DWORD dwLobbyConnectDataSize; 101 PVOID pvConnectionContext; 102 } DPL_MESSAGE_CONNECT, *PDPL_MESSAGE_CONNECT; 103 104 typedef struct _DPL_MESSAGE_CONNECTION_SETTINGS { 105 DWORD dwSize; 106 DPNHANDLE hSender; 107 PDPL_CONNECTION_SETTINGS pdplConnectionSettings; 108 PVOID pvConnectionContext; 109 } DPL_MESSAGE_CONNECTION_SETTINGS, *PDPL_MESSAGE_CONNECTION_SETTINGS; 110 111 typedef struct _DPL_MESSAGE_DISCONNECT { 112 DWORD dwSize; 113 DPNHANDLE hDisconnectId; 114 HRESULT hrReason; 115 PVOID pvConnectionContext; 116 } DPL_MESSAGE_DISCONNECT, *PDPL_MESSAGE_DISCONNECT; 117 118 typedef struct _DPL_MESSAGE_RECEIVE { 119 DWORD dwSize; 120 DPNHANDLE hSender; 121 BYTE* pBuffer; 122 DWORD dwBufferSize; 123 PVOID pvConnectionContext; 124 } DPL_MESSAGE_RECEIVE, *PDPL_MESSAGE_RECEIVE; 125 126 typedef struct _DPL_MESSAGE_SESSION_STATUS { 127 DWORD dwSize; 128 DPNHANDLE hSender; 129 DWORD dwStatus; 130 PVOID pvConnectionContext; 131 } DPL_MESSAGE_SESSION_STATUS, *PDPL_MESSAGE_SESSION_STATUS; 132 133 /***************************************************************************** 134 * Predeclare the interfaces 135 */ 136 DEFINE_GUID(CLSID_DirectPlay8LobbiedApplication, 0x667955ad,0x6b3b,0x43ca,0xb9,0x49,0xbc,0x69,0xb5,0xba,0xff,0x7f); 137 DEFINE_GUID(CLSID_DirectPlay8LobbyClient, 0x3b2b6775,0x70b6,0x45af,0x8d,0xea,0xa2,0x09,0xc6,0x95,0x59,0xf3); 138 139 DEFINE_GUID(IID_IDirectPlay8LobbiedApplication, 0x819074a3,0x16c,0x11d3,0xae,0x14,0x00,0x60,0x97,0xb0,0x14,0x11); 140 typedef struct IDirectPlay8LobbiedApplication *PDIRECTPLAY8LOBBIEDAPPLICATION; 141 DEFINE_GUID(IID_IDirectPlay8LobbyClient, 0x819074a2,0x16c,0x11d3,0xae,0x14,0x00,0x60,0x97,0xb0,0x14,0x11); 142 typedef struct IDirectPlay8LobbyClient *PDIRECTPLAY8LOBBYCLIENT; 143 144 /***************************************************************************** 145 * IDirectPlay8LobbiedApplication interface 146 */ 147 #define INTERFACE IDirectPlay8LobbiedApplication 148 DECLARE_INTERFACE_(IDirectPlay8LobbiedApplication,IUnknown) 149 { 150 /*** IUnknown methods ***/ 151 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 152 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 153 STDMETHOD_(ULONG,Release)(THIS) PURE; 154 /*** IDirectPlay8LobbiedApplication methods ***/ 155 STDMETHOD(Initialize)(THIS_ CONST PVOID pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, DPNHANDLE* CONST pdpnhConnection, CONST DWORD dwFlags) PURE; 156 STDMETHOD(RegisterProgram)(THIS_ PDPL_PROGRAM_DESC pdplProgramDesc, CONST DWORD dwFlags) PURE; 157 STDMETHOD(UnRegisterProgram)(THIS_ GUID* pguidApplication, CONST DWORD dwFlags) PURE; 158 STDMETHOD(Send)(THIS_ CONST DPNHANDLE hConnection, BYTE* CONST pBuffer, CONST DWORD pBufferSize, CONST DWORD dwFlags) PURE; 159 STDMETHOD(SetAppAvailable)(THIS_ CONST WINBOOL fAvailable, CONST DWORD dwFlags) PURE; 160 STDMETHOD(UpdateStatus)(THIS_ CONST DPNHANDLE hConnection, CONST DWORD dwStatus, CONST DWORD dwFlags) PURE; 161 STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE; 162 STDMETHOD(GetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, DWORD* pdwInfoSize, CONST DWORD dwFlags) PURE; 163 STDMETHOD(SetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, CONST DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, CONST DWORD dwFlags) PURE; 164 }; 165 #undef INTERFACE 166 167 #if !defined(__cplusplus) || defined(CINTERFACE) 168 /*** IUnknown methods ***/ 169 #define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 170 #define IDirectPlay8LobbiedApplication_AddRef(p) (p)->lpVtbl->AddRef(p) 171 #define IDirectPlay8LobbiedApplication_Release(p) (p)->lpVtbl->Release(p) 172 /*** IDirectPlay8LobbiedApplication methods ***/ 173 #define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d) (p)->lpVtbl->Initialize(p,a,b,c,d) 174 #define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b) (p)->lpVtbl->RegisterProgram(p,a,b) 175 #define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b) (p)->lpVtbl->UnRegisterProgram(p,a,b) 176 #define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d) (p)->lpVtbl->Send(p,a,b,c,d) 177 #define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b) (p)->lpVtbl->SetAppAvailable(p,a,b) 178 #define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c) (p)->lpVtbl->UpdateStatus(p,a,b,c) 179 #define IDirectPlay8LobbiedApplication_Close(p,a) (p)->lpVtbl->Close(p,a) 180 #define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d) 181 #define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) 182 #else 183 /*** IUnknown methods ***/ 184 #define IDirectPlay8LobbiedApplication_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 185 #define IDirectPlay8LobbiedApplication_AddRef(p) (p)->AddRef() 186 #define IDirectPlay8LobbiedApplication_Release(p) (p)->Release() 187 /*** IDirectPlay8LobbiedApplication methods ***/ 188 #define IDirectPlay8LobbiedApplication_Initialize(p,a,b,c,d) (p)->Initialize(a,b,c,d) 189 #define IDirectPlay8LobbiedApplication_RegisterProgram(p,a,b) (p)->RegisterProgram(a,b) 190 #define IDirectPlay8LobbiedApplication_UnRegisterProgram(p,a,b) (p)->UnRegisterProgram(a,b) 191 #define IDirectPlay8LobbiedApplication_Send(p,a,b,c,d) (p)->Send(a,b,c,d) 192 #define IDirectPlay8LobbiedApplication_SetAppAvailable(p,a,b) (p)->SetAppAvailable(a,b) 193 #define IDirectPlay8LobbiedApplication_UpdateStatus(p,a,b,c) (p)->UpdateStatus(a,b,c) 194 #define IDirectPlay8LobbiedApplication_Close(p,a) (p)->Close(a) 195 #define IDirectPlay8LobbiedApplication_GetConnectionSettings(p,a,b,c,d) (p)->GetConnectionSettings(a,b,c,d) 196 #define IDirectPlay8LobbiedApplication_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) 197 #endif 198 199 /***************************************************************************** 200 * IDirectPlay8LobbyClient interface 201 */ 202 #define INTERFACE IDirectPlay8LobbyClient 203 DECLARE_INTERFACE_(IDirectPlay8LobbyClient,IUnknown) 204 { 205 /*** IUnknown methods ***/ 206 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 207 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 208 STDMETHOD_(ULONG,Release)(THIS) PURE; 209 /*** IDirectPlay8LobbyClient methods ***/ 210 STDMETHOD(Initialize)(THIS_ CONST PVOID pvUserContext, CONST PFNDPNMESSAGEHANDLER pfn, CONST DWORD dwFlags) PURE; 211 STDMETHOD(EnumLocalPrograms)(THIS_ GUID* CONST pGuidApplication, BYTE* CONST pEnumData, DWORD* CONST pdwEnumData, DWORD* CONST pdwItems, CONST DWORD dwFlags) PURE; 212 STDMETHOD(ConnectApplication)(THIS_ DPL_CONNECT_INFO* CONST pdplConnectionInfo, CONST PVOID pvConnectionContext, DPNHANDLE* CONST hApplication, CONST DWORD dwTimeOut, CONST DWORD dwFlags) PURE; 213 STDMETHOD(Send)(THIS_ CONST DPNHANDLE hConnection, BYTE* CONST pBuffer, CONST DWORD pBufferSize, CONST DWORD dwFlags) PURE; 214 STDMETHOD(ReleaseApplication)(THIS_ CONST DPNHANDLE hConnection, CONST DWORD dwFlags) PURE; 215 STDMETHOD(Close)(THIS_ CONST DWORD dwFlags) PURE; 216 STDMETHOD(GetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, DWORD* pdwInfoSize, CONST DWORD dwFlags) PURE; 217 STDMETHOD(SetConnectionSettings)(THIS_ CONST DPNHANDLE hConnection, CONST DPL_CONNECTION_SETTINGS* CONST pdplSessionInfo, CONST DWORD dwFlags) PURE; 218 }; 219 #undef INTERFACE 220 221 #if !defined(__cplusplus) || defined(CINTERFACE) 222 /*** IUnknown methods ***/ 223 #define IDirectPlay8LobbyClient_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 224 #define IDirectPlay8LobbyClient_AddRef(p) (p)->lpVtbl->AddRef(p) 225 #define IDirectPlay8LobbyClient_Release(p) (p)->lpVtbl->Release(p) 226 /*** IDirectPlay8LobbyClient methods ***/ 227 #define IDirectPlay8LobbyClient_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 228 #define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e) (p)->lpVtbl->EnumLocalPrograms(p,a,b,c,d,e) 229 #define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e) (p)->lpVtbl->ConnectApplication(p,a,b,c,d,e) 230 #define IDirectPlay8LobbyClient_Send(p,a,b,c,d) (p)->lpVtbl->Send(p,a,b,c,d) 231 #define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b) (p)->lpVtbl->ReleaseApplication(p,a,b) 232 #define IDirectPlay8LobbyClient_Close(p,a) (p)->lpVtbl->Close(p,a) 233 #define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetConnectionSettings(p,a,b,c,d) 234 #define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c) 235 #else 236 /*** IUnknown methods ***/ 237 #define IDirectPlay8LobbyClient_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 238 #define IDirectPlay8LobbyClient_AddRef(p) (p)->AddRef() 239 #define IDirectPlay8LobbyClient_Release(p) (p)->Release() 240 /*** IDirectPlay8LobbyClient methods ***/ 241 #define IDirectPlay8LobbyClient_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 242 #define IDirectPlay8LobbyClient_EnumLocalPrograms(p,a,b,c,d,e) (p)->EnumLocalPrograms(a,b,c,d,e) 243 #define IDirectPlay8LobbyClient_ConnectApplication(p,a,b,c,d,e) (p)->ConnectApplication(a,b,c,d,e) 244 #define IDirectPlay8LobbyClient_Send(p,a,b,c,d) (p)->Send(a,b,c,d) 245 #define IDirectPlay8LobbyClient_ReleaseApplication(p,a,b) (p)->ReleaseApplication(a,b) 246 #define IDirectPlay8LobbyClient_Close(p,a) (p)->Close(a) 247 #define IDirectPlay8LobbyClient_GetConnectionSettings(p,a,b,c,d) (p)->GetConnectionSettings(a,b,c,d) 248 #define IDirectPlay8LobbyClient_SetConnectionSettings(p,a,b,c) (p)->SetConnectionSettings(a,b,c) 249 #endif 250 251 252 /* Export functions */ 253 254 HRESULT WINAPI DirectPlay8LobbyCreate(CONST GUID* pcIID, LPVOID* ppvInterface, IUnknown* pUnknown); 255 256 #ifdef __cplusplus 257 } 258 #endif 259 260 #endif 261