Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendplaysp.h
Go to the documentation of this file.
00001 /* 00002 * Copyright 2000 Peter Hunnisett 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with this library; if not, write to the Free Software 00016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 */ 00018 00019 #ifndef __WINE_DIRECT_PLAY_SP_H 00020 #define __WINE_DIRECT_PLAY_SP_H 00021 00022 #include <stdarg.h> 00023 00024 #include "windef.h" 00025 #include "winbase.h" 00026 #include "winuser.h" 00027 #include "dplay.h" 00028 #include "dplobby.h" 00029 00030 /* GUID for IDirectPlaySP {0C9F6360-CC61-11cf-ACEC-00AA006886E3} */ 00031 DEFINE_GUID(IID_IDirectPlaySP, 0xc9f6360, 0xcc61, 0x11cf, 0xac, 0xec, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3); 00032 typedef struct IDirectPlaySP *LPDIRECTPLAYSP; 00033 00034 00035 typedef BOOL (CALLBACK *LPENUMMRUCALLBACK)( LPCVOID lpData, 00036 DWORD dwDataSize, 00037 LPVOID lpContext ); 00038 00039 /* For SP. Top 16 bits is dplay, bottom 16 is SP */ 00040 #define DPSP_MAJORVERSION 0x00060000 00041 #define DPSP_DX5VERSION 0x00050000 00042 #define DPSP_DX3VERSION 0x00040000 00043 00044 #define DPSP_MAJORVERSIONMASK 0xFFFF0000 00045 #define DPSP_MINORVERSIONMASK 0x0000FFFF 00046 00047 00048 /* Some flags */ 00049 #define DPLAYI_PLAYER_SYSPLAYER 0x00000001 00050 #define DPLAYI_PLAYER_NAMESRVR 0x00000002 00051 #define DPLAYI_PLAYER_PLAYERINGROUP 0x00000004 00052 #define DPLAYI_PLAYER_PLAYERLOCAL 0x00000008 00053 #define DPLAYI_GROUP_SYSGROUP 0x00000020 00054 #define DPLAYI_GROUP_DPLAYOWNS 0x00000040 00055 #define DPLAYI_PLAYER_APPSERVER 0x00000080 00056 #define DPLAYI_GROUP_HIDDEN 0x00000400 00057 00058 /* Define the COM interface */ 00059 #define INTERFACE IDirectPlaySP 00060 DECLARE_INTERFACE_(IDirectPlaySP,IUnknown) 00061 { 00062 /*** IUnknown methods ***/ 00063 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00064 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00065 STDMETHOD_(ULONG,Release)(THIS) PURE; 00066 /*** IDirectPlaySP methods ***/ 00067 STDMETHOD(AddMRUEntry)(THIS_ LPCWSTR lpSection, LPCWSTR lpKey, LPCVOID lpData, DWORD dwDataSize, DWORD dwMaxEntries ) PURE; 00068 STDMETHOD(CreateAddress)(THIS_ REFGUID guidSP, REFGUID guidDataType, LPCVOID lpData, DWORD dwDataSize, LPVOID lpAddress,LPDWORD lpdwAddressSize) PURE; 00069 STDMETHOD(EnumAddress)(THIS_ LPDPENUMADDRESSCALLBACK lpEnumAddressCallback, LPCVOID lpAddress, DWORD dwAddressSize, LPVOID lpContext ) PURE; 00070 STDMETHOD(EnumMRUEntries)(THIS_ LPCWSTR lpSection, LPCWSTR lpKey, LPENUMMRUCALLBACK lpEnumMRUCallback, LPVOID lpContext ) PURE; 00071 STDMETHOD(GetPlayerFlags)(THIS_ DPID idPlayer, LPDWORD lpdwPlayerFlags ) PURE; 00072 STDMETHOD(GetSPPlayerData)(THIS_ DPID idPlayer, LPVOID *lplpData, LPDWORD lpdwDataSize, DWORD dwFlags ) PURE; 00073 STDMETHOD(HandleMessage)(THIS_ LPVOID lpMessageBody, DWORD dwMessageBodySize, LPVOID lpMessageHeader ) PURE; 00074 STDMETHOD(SetSPPlayerData)(THIS_ DPID idPlayer, LPVOID lpData, DWORD dwDataSize, DWORD dwFlags ) PURE; 00075 STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT lpElements, DWORD dwElementCount, LPVOID lpAddress, LPDWORD lpdwAddressSize ) PURE; 00076 STDMETHOD(GetSPData)(THIS_ LPVOID *lplpData, LPDWORD dwDataSize, DWORD dwFlags ) PURE; 00077 STDMETHOD(SetSPData)(THIS_ LPVOID lpData, DWORD dwDataSize, DWORD dwFlags ) PURE; 00078 STDMETHOD_(VOID,SendComplete)(THIS_ LPVOID , DWORD ) PURE; 00079 }; 00080 #undef INTERFACE 00081 00082 00083 /* NOTE: The microsoft provided header file doesn't have these access 00084 * functions 00085 */ 00086 #if !defined (__cplusplus) || defined(CINTERFACE) 00087 /*** IUnknown methods ***/ 00088 #define IDirectPlaySP_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00089 #define IDirectPlaySP_AddRef(p) (p)->lpVtbl->AddRef(p) 00090 #define IDirectPlaySP_Release(p) (p)->lpVtbl->Release(p) 00091 /*** IDirectPlaySP methods ***/ 00092 #define IDirectPlaySP_AddMRUEntry(p,a,b,c,d,e) (p)->lpVtbl->AddMRUEntry(p,a,b,c,d,e) 00093 #define IDirectPlaySP_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f) 00094 #define IDirectPlaySP_EnumAddress(p,a,b,c,d) (p)->lpVtbl->EnumAddress(p,a,b,c,d) 00095 #define IDirectPlaySP_EnumMRUEntries(p,a,b,c,d) (p)->lpVtbl->EnumMRUEntries(p,a,b,c,d) 00096 #define IDirectPlaySP_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b) 00097 #define IDirectPlaySP_GetSPPlayerData(p,a,b,c,d) (p)->lpVtbl->GetSPPlayerData(p,a,b,c,d) 00098 #define IDirectPlaySP_HandleMessage(p,a,b,c) (p)->lpVtbl->HandleMessage(p,a,b,c) 00099 #define IDirectPlaySP_SetSPPlayerData(p,a,b,c,d) (p)->lpVtbl->SetSPPlayerData(p,a,b,c,d) 00100 #define IDirectPlaySP_CreateCompoundAddress(p,a,b,c,d) (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d) 00101 #define IDirectPlaySP_GetSPData(p,a,b,c) (p)->lpVtbl->GetSPData(p,a,b,c) 00102 #define IDirectPlaySP_SetSPData(p,a,b,c) (p)->lpVtbl->SetSPData(p,a,b,c) 00103 #define IDirectPlaySP_SendComplete(p,a,b) (p)->lpVtbl->SendComplete(p,a,b) 00104 #endif 00105 00106 /* SP Callback stuff */ 00107 00108 typedef struct tagDPSP_ADDPLAYERTOGROUPDATA 00109 { 00110 DPID idPlayer; 00111 DPID idGroup; 00112 IDirectPlaySP* lpISP; 00113 } DPSP_ADDPLAYERTOGROUPDATA, *LPDPSP_ADDPLAYERTOGROUPDATA; 00114 00115 typedef struct tagDPSP_CLOSEDATA 00116 { 00117 IDirectPlaySP* lpISP; 00118 } DPSP_CLOSEDATA, *LPDPSP_CLOSEDATA; 00119 00120 typedef struct tagDPSP_CREATEGROUPDATA 00121 { 00122 DPID idGroup; 00123 DWORD dwFlags; 00124 LPVOID lpSPMessageHeader; 00125 IDirectPlaySP* lpISP; 00126 } DPSP_CREATEGROUPDATA, *LPDPSP_CREATEGROUPDATA; 00127 00128 typedef struct tagDPSP_CREATEPLAYERDATA 00129 { 00130 DPID idPlayer; 00131 DWORD dwFlags; 00132 LPVOID lpSPMessageHeader; 00133 IDirectPlaySP* lpISP; 00134 } DPSP_CREATEPLAYERDATA, *LPDPSP_CREATEPLAYERDATA; 00135 00136 typedef struct tagDPSP_DELETEGROUPDATA 00137 { 00138 DPID idGroup; 00139 DWORD dwFlags; 00140 IDirectPlaySP* lpISP; 00141 } DPSP_DELETEGROUPDATA, *LPDPSP_DELETEGROUPDATA; 00142 00143 typedef struct tagDPSP_DELETEPLAYERDATA 00144 { 00145 DPID idPlayer; 00146 DWORD dwFlags; 00147 IDirectPlaySP* lpISP; 00148 } DPSP_DELETEPLAYERDATA, *LPDPSP_DELETEPLAYERDATA; 00149 00150 typedef struct tagDPSP_ENUMSESSIONSDATA 00151 { 00152 LPVOID lpMessage; 00153 DWORD dwMessageSize; 00154 IDirectPlaySP* lpISP; 00155 BOOL bReturnStatus; 00156 } DPSP_ENUMSESSIONSDATA, *LPDPSP_ENUMSESSIONSDATA; 00157 00158 typedef struct _DPSP_GETADDRESSDATA 00159 { 00160 DPID idPlayer; 00161 DWORD dwFlags; 00162 LPDPADDRESS lpAddress; 00163 LPDWORD lpdwAddressSize; 00164 IDirectPlaySP* lpISP; 00165 } DPSP_GETADDRESSDATA, *LPDPSP_GETADDRESSDATA; 00166 00167 typedef struct tagDPSP_GETADDRESSCHOICESDATA 00168 { 00169 LPDPADDRESS lpAddress; 00170 LPDWORD lpdwAddressSize; 00171 IDirectPlaySP* lpISP; 00172 } DPSP_GETADDRESSCHOICESDATA, *LPDPSP_GETADDRESSCHOICESDATA; 00173 00174 typedef struct tagDPSP_GETCAPSDATA 00175 { 00176 DPID idPlayer; 00177 LPDPCAPS lpCaps; 00178 DWORD dwFlags; 00179 IDirectPlaySP* lpISP; 00180 } DPSP_GETCAPSDATA, *LPDPSP_GETCAPSDATA; 00181 00182 typedef struct tagDPSP_OPENDATA 00183 { 00184 BOOL bCreate; 00185 LPVOID lpSPMessageHeader; 00186 IDirectPlaySP* lpISP; 00187 BOOL bReturnStatus; 00188 DWORD dwOpenFlags; 00189 DWORD dwSessionFlags; 00190 } DPSP_OPENDATA, *LPDPSP_OPENDATA; 00191 00192 typedef struct tagDPSP_REMOVEPLAYERFROMGROUPDATA 00193 { 00194 DPID idPlayer; 00195 DPID idGroup; 00196 IDirectPlaySP* lpISP; 00197 } DPSP_REMOVEPLAYERFROMGROUPDATA, *LPDPSP_REMOVEPLAYERFROMGROUPDATA; 00198 00199 typedef struct tagDPSP_REPLYDATA 00200 { 00201 LPVOID lpSPMessageHeader; 00202 LPVOID lpMessage; 00203 DWORD dwMessageSize; 00204 DPID idNameServer; 00205 IDirectPlaySP* lpISP; 00206 } DPSP_REPLYDATA, *LPDPSP_REPLYDATA; 00207 00208 typedef struct tagDPSP_SENDDATA 00209 { 00210 DWORD dwFlags; 00211 DPID idPlayerTo; 00212 DPID idPlayerFrom; 00213 LPVOID lpMessage; 00214 DWORD dwMessageSize; 00215 BOOL bSystemMessage; 00216 IDirectPlaySP* lpISP; 00217 } DPSP_SENDDATA, *LPDPSP_SENDDATA; 00218 00219 typedef struct tagDPSP_SENDTOGROUPDATA 00220 { 00221 DWORD dwFlags; 00222 DPID idGroupTo; 00223 DPID idPlayerFrom; 00224 LPVOID lpMessage; 00225 DWORD dwMessageSize; 00226 IDirectPlaySP* lpISP; 00227 } DPSP_SENDTOGROUPDATA, *LPDPSP_SENDTOGROUPDATA; 00228 00229 typedef struct tagDPSP_SENDEXDATA 00230 { 00231 IDirectPlaySP* lpISP; 00232 DWORD dwFlags; 00233 DPID idPlayerTo; 00234 DPID idPlayerFrom; 00235 LPSGBUFFER lpSendBuffers; 00236 DWORD cBuffers; 00237 DWORD dwMessageSize; 00238 DWORD dwPriority; 00239 DWORD dwTimeout; 00240 LPVOID lpDPContext; 00241 LPDWORD lpdwSPMsgID; 00242 BOOL bSystemMessage; 00243 } DPSP_SENDEXDATA, *LPDPSP_SENDEXDATA; 00244 00245 typedef struct tagDPSP_SENDTOGROUPEXDATA 00246 { 00247 IDirectPlaySP* lpISP; 00248 DWORD dwFlags; 00249 DPID idGroupTo; 00250 DPID idPlayerFrom; 00251 LPSGBUFFER lpSendBuffers; 00252 DWORD cBuffers; 00253 DWORD dwMessageSize; 00254 DWORD dwPriority; 00255 DWORD dwTimeout; 00256 LPVOID lpDPContext; 00257 LPDWORD lpdwSPMsgID; 00258 } DPSP_SENDTOGROUPEXDATA, *LPDPSP_SENDTOGROUPEXDATA; 00259 00260 typedef struct tagDPSP_GETMESSAGEQUEUEDATA 00261 { 00262 IDirectPlaySP* lpISP; 00263 DWORD dwFlags; 00264 DPID idFrom; 00265 DPID idTo; 00266 LPDWORD lpdwNumMsgs; 00267 LPDWORD lpdwNumBytes; 00268 } DPSP_GETMESSAGEQUEUEDATA, *LPDPSP_GETMESSAGEQUEUEDATA; 00269 00270 #define DPCANCELSEND_PRIORITY 0x00000001 00271 #define DPCANCELSEND_ALL 0x00000002 00272 00273 typedef struct tagDPSP_CANCELDATA 00274 { 00275 IDirectPlaySP* lpISP; 00276 DWORD dwFlags; 00277 LPRGLPVOID lprglpvSPMsgID; 00278 DWORD cSPMsgID; 00279 DWORD dwMinPriority; 00280 DWORD dwMaxPriority; 00281 } DPSP_CANCELDATA, *LPDPSP_CANCELDATA; 00282 00283 typedef struct tagDPSP_SHUTDOWNDATA 00284 { 00285 IDirectPlaySP* lpISP; 00286 } DPSP_SHUTDOWNDATA, *LPDPSP_SHUTDOWNDATA; 00287 00288 00289 /* Prototypes returned by SPInit */ 00290 typedef HRESULT (WINAPI *LPDPSP_CREATEPLAYER)(LPDPSP_CREATEPLAYERDATA); 00291 typedef HRESULT (WINAPI *LPDPSP_DELETEPLAYER)(LPDPSP_DELETEPLAYERDATA); 00292 typedef HRESULT (WINAPI *LPDPSP_SEND)(LPDPSP_SENDDATA); 00293 typedef HRESULT (WINAPI *LPDPSP_ENUMSESSIONS)(LPDPSP_ENUMSESSIONSDATA); 00294 typedef HRESULT (WINAPI *LPDPSP_REPLY)(LPDPSP_REPLYDATA); 00295 typedef HRESULT (WINAPI *LPDPSP_SHUTDOWN)(void); 00296 typedef HRESULT (WINAPI *LPDPSP_CREATEGROUP)(LPDPSP_CREATEGROUPDATA); 00297 typedef HRESULT (WINAPI *LPDPSP_DELETEGROUP)(LPDPSP_DELETEGROUPDATA); 00298 typedef HRESULT (WINAPI *LPDPSP_ADDPLAYERTOGROUP)(LPDPSP_ADDPLAYERTOGROUPDATA); 00299 typedef HRESULT (WINAPI *LPDPSP_REMOVEPLAYERFROMGROUP)(LPDPSP_REMOVEPLAYERFROMGROUPDATA); 00300 typedef HRESULT (WINAPI *LPDPSP_GETCAPS)(LPDPSP_GETCAPSDATA); 00301 typedef HRESULT (WINAPI *LPDPSP_GETADDRESS)(LPDPSP_GETADDRESSDATA); 00302 typedef HRESULT (WINAPI *LPDPSP_GETADDRESSCHOICES)(LPDPSP_GETADDRESSCHOICESDATA); 00303 typedef HRESULT (WINAPI *LPDPSP_OPEN)(LPDPSP_OPENDATA); 00304 typedef HRESULT (WINAPI *LPDPSP_CLOSE)(void); 00305 typedef HRESULT (WINAPI *LPDPSP_SENDTOGROUP)(LPDPSP_SENDTOGROUPDATA); 00306 typedef HRESULT (WINAPI *LPDPSP_SHUTDOWNEX)(LPDPSP_SHUTDOWNDATA); 00307 typedef HRESULT (WINAPI *LPDPSP_CLOSEEX)(LPDPSP_CLOSEDATA); 00308 typedef HRESULT (WINAPI *LPDPSP_SENDEX)(LPDPSP_SENDEXDATA); 00309 typedef HRESULT (WINAPI *LPDPSP_SENDTOGROUPEX)(LPDPSP_SENDTOGROUPEXDATA); 00310 typedef HRESULT (WINAPI *LPDPSP_CANCEL)(LPDPSP_CANCELDATA); 00311 typedef HRESULT (WINAPI *LPDPSP_GETMESSAGEQUEUE)(LPDPSP_GETMESSAGEQUEUEDATA); 00312 00313 00314 typedef struct tagDPSP_SPCALLBACKS 00315 { 00316 DWORD dwSize; 00317 DWORD dwVersion; 00318 00319 LPDPSP_ENUMSESSIONS EnumSessions; /* Must be provided */ 00320 LPDPSP_REPLY Reply; /* Must be provided */ 00321 LPDPSP_SEND Send; /* Must be provided */ 00322 LPDPSP_ADDPLAYERTOGROUP AddPlayerToGroup; /* Optional */ 00323 LPDPSP_CLOSE Close; /* Optional */ 00324 LPDPSP_CREATEGROUP CreateGroup; /* Optional */ 00325 LPDPSP_CREATEPLAYER CreatePlayer; /* Optional */ 00326 LPDPSP_DELETEGROUP DeleteGroup; /* Optional */ 00327 LPDPSP_DELETEPLAYER DeletePlayer; /* Optional */ 00328 LPDPSP_GETADDRESS GetAddress; /* Optional */ 00329 LPDPSP_GETCAPS GetCaps; /* Optional */ 00330 LPDPSP_OPEN Open; /* Optional */ 00331 LPDPSP_REMOVEPLAYERFROMGROUP RemovePlayerFromGroup; /* Optional */ 00332 LPDPSP_SENDTOGROUP SendToGroup; /* Optional */ 00333 LPDPSP_SHUTDOWN Shutdown; /* Optional */ 00334 00335 LPDPSP_CLOSEEX CloseEx; /* Optional */ 00336 LPDPSP_SHUTDOWNEX ShutdownEx; /* Optional */ 00337 LPDPSP_GETADDRESSCHOICES GetAddressChoices; /* Optional */ 00338 00339 LPDPSP_SENDEX SendEx; /* Optional */ 00340 LPDPSP_SENDTOGROUPEX SendToGroupEx; /* Optional */ 00341 LPDPSP_CANCEL Cancel; /* Optional */ 00342 LPDPSP_GETMESSAGEQUEUE GetMessageQueue; /* Optional */ 00343 } DPSP_SPCALLBACKS, *LPDPSP_SPCALLBACKS; 00344 00345 typedef struct tagSPINITDATA 00346 { 00347 LPDPSP_SPCALLBACKS lpCB; 00348 IDirectPlaySP* lpISP; 00349 LPWSTR lpszName; 00350 LPGUID lpGuid; 00351 DWORD dwReserved1; 00352 DWORD dwReserved2; 00353 DWORD dwSPHeaderSize; 00354 LPDPADDRESS lpAddress; 00355 DWORD dwAddressSize; 00356 DWORD dwSPVersion; 00357 } SPINITDATA, *LPSPINITDATA; 00358 00359 typedef HRESULT (WINAPI *LPDPSP_SPINIT)(LPSPINITDATA); 00360 00361 /* This variable is exported from the DLL at ordinal 6 to be accessed by the 00362 * SP directly 00363 */ 00364 extern DWORD gdwDPlaySPRefCount; 00365 00366 #endif Generated on Sat May 26 2012 04:20:09 for ReactOS by
1.7.6.1
|