ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dplaysp.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.