⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dplay.h

📁 quake的sdl移植
💻 H
字号:
/*==========================================================================; * *  Copyright (C) 1994-1995 Microsoft Corporation.  All Rights Reserved. * *  File:       dplay.h *  Content:    DirectPlay include file * ***************************************************************************/#ifndef __DPLAY_INCLUDED__#define __DPLAY_INCLUDED__#ifdef _WIN32/* for DECLARE_INTERFACE and HRESULT. */#include <ole2.h>#endif#define _FACDP  0x877#define MAKE_DPHRESULT( code )    MAKE_HRESULT( 1, _FACDP, code )#ifdef __cplusplusextern "C" {#endif#pragma pack(push, 1)/*============================================================================ * * DirectPlay Structures * * Various structures used to invoke DirectPlay. * *==========================================================================*/#ifdef __cplusplus/* 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined */struct IDirectPlay;typedef struct IDirectPlay        FAR *LPDIRECTPLAY;#else                  typedef struct IDirectPlay        FAR *LPDIRECTPLAY;#endiftypedef DWORD DPID, FAR *LPDPID;typedef struct _DPCAPS{    DWORD   dwSize;    DWORD   dwFlags;    DWORD   dwMaxBufferSize;    DWORD   dwMaxQueueSize;             // Function of DPlay, not SP.    DWORD   dwMaxPlayers;    DWORD   dwHundredBaud;              // 24 is 2400, 96 is 9600, etc.    DWORD   dwLatency;} DPCAPS;typedef DPCAPS        FAR *LPDPCAPS;#define DPLONGNAMELEN           52#define DPSHORTNAMELEN          20#define DPSESSIONNAMELEN        32#define DPPASSWORDLEN           16#define DPUSERRESERVED          16typedef struct{    DWORD   dwSize;    GUID    guidSession;                  // Id for Game.  Null is all games.    DWORD   dwSession;                    // session identifier    DWORD   dwMaxPlayers;                 // Maximum players allowed in game.    DWORD   dwCurrentPlayers;             // Current  players in Game.    DWORD   dwFlags;                      // DPOPEN_* flags    char    szSessionName[DPSESSIONNAMELEN];// Human readable name for Game    char    szUserField[DPUSERRESERVED];    DWORD   dwReserved1;                  // Reserved for future MS use.    char    szPassword[DPPASSWORDLEN];    // Password to be allowed into game.    DWORD   dwReserved2;                  // Reserved for future MS use.     DWORD   dwUser1;    DWORD   dwUser2;    DWORD   dwUser3;    DWORD   dwUser4;} DPSESSIONDESC;typedef DPSESSIONDESC FAR *LPDPSESSIONDESC;/* * Create API */typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)(    LPGUID              lpSPGuid,    LPSTR               lpFriendlyName,    DWORD               dwMajorVersion,    DWORD               dwMinorVersion,    LPVOID              lpContext);typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK)(    LPDPSESSIONDESC     lpDPSGameDesc,    LPVOID              lpContext,    LPDWORD             lpdwTimeOut,    DWORD               dwFlags);extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY FAR *lplpDP, IUnknown FAR *pUnk);extern HRESULT WINAPI DirectPlayEnumerate( LPDPENUMDPCALLBACK, LPVOID );/* Player enumeration callback prototype */typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK)(    DPID    dpId,    LPSTR   lpFriendlyName,    LPSTR   lpFormalName,    DWORD   dwFlags,    LPVOID  lpContext );/* * IDirectPlay */#undef INTERFACE#define INTERFACE IDirectPlay#ifdef _WIN32DECLARE_INTERFACE_( IDirectPlay, IUnknown ){    /*** IUnknown methods ***/    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID * ppvObj) PURE;    STDMETHOD_(ULONG,AddRef)        (THIS)  PURE;    STDMETHOD_(ULONG,Release)       (THIS) PURE;    /*** IDirectPlay methods ***/    STDMETHOD(AddPlayerToGroup)     (THIS_ DPID, DPID) PURE;    STDMETHOD(Close)                (THIS) PURE;    STDMETHOD(CreatePlayer)         (THIS_ LPDPID,LPSTR,LPSTR,LPHANDLE) PURE;    STDMETHOD(CreateGroup)          (THIS_ LPDPID,LPSTR,LPSTR) PURE;    STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;    STDMETHOD(DestroyPlayer)        (THIS_ DPID) PURE;    STDMETHOD(DestroyGroup)         (THIS_ DPID) PURE;    STDMETHOD(EnableNewPlayers)     (THIS_ BOOL) PURE;    STDMETHOD(EnumGroupPlayers)     (THIS_ DPID, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;    STDMETHOD(EnumGroups)           (THIS_ DWORD, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;    STDMETHOD(EnumPlayers)          (THIS_ DWORD, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;    STDMETHOD(EnumSessions)         (THIS_ LPDPSESSIONDESC,DWORD,LPDPENUMSESSIONSCALLBACK,LPVOID,DWORD) PURE;    STDMETHOD(GetCaps)              (THIS_ LPDPCAPS) PURE;    STDMETHOD(GetMessageCount)      (THIS_ DPID, LPDWORD) PURE;    STDMETHOD(GetPlayerCaps)        (THIS_ DPID, LPDPCAPS) PURE;    STDMETHOD(GetPlayerName)        (THIS_ DPID,LPSTR,LPDWORD,LPSTR,LPDWORD) PURE;    STDMETHOD(Initialize)           (THIS_ LPGUID) PURE;    STDMETHOD(Open)                 (THIS_ LPDPSESSIONDESC) PURE;    STDMETHOD(Receive)              (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;    STDMETHOD(SaveSession)          (THIS_ LPSTR) PURE;    STDMETHOD(Send)                 (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;    STDMETHOD(SetPlayerName)        (THIS_ DPID,LPSTR,LPSTR) PURE;};#endif/**************************************************************************** * * DIRECTPLAY ERRORS * * Errors are represented by negative values and cannot be combined. * ****************************************************************************/#define DP_OK                           0#define DPERR_ALREADYINITIALIZED        MAKE_DPHRESULT(   5 )#define DPERR_ACCESSDENIED              MAKE_DPHRESULT(  10 )#define DPERR_ACTIVEPLAYERS             MAKE_DPHRESULT(  20 )#define DPERR_BUFFERTOOSMALL            MAKE_DPHRESULT(  30 )#define DPERR_CANTADDPLAYER             MAKE_DPHRESULT(  40 )#define DPERR_CANTCREATEGROUP           MAKE_DPHRESULT(  50 )#define DPERR_CANTCREATEPLAYER          MAKE_DPHRESULT(  60 )#define DPERR_CANTCREATESESSION         MAKE_DPHRESULT(  70 )#define DPERR_CAPSNOTAVAILABLEYET       MAKE_DPHRESULT(  80 )#define DPERR_EXCEPTION                 MAKE_DPHRESULT(  90 )#define DPERR_GENERIC                   E_FAIL#define DPERR_INVALIDFLAGS              MAKE_DPHRESULT( 120 )#define DPERR_INVALIDOBJECT             MAKE_DPHRESULT( 130 )#define DPERR_INVALIDPARAM              E_INVALIDARG#define DPERR_INVALIDPARAMS             DPERR_INVALIDPARAM#define DPERR_INVALIDPLAYER             MAKE_DPHRESULT( 150 )#define DPERR_NOCAPS                    MAKE_DPHRESULT( 160 )#define DPERR_NOCONNECTION              MAKE_DPHRESULT( 170 )#define DPERR_NOMEMORY                  E_OUTOFMEMORY#define DPERR_OUTOFMEMORY               DPERR_NOMEMORY#define DPERR_NOMESSAGES                MAKE_DPHRESULT( 190 )#define DPERR_NONAMESERVERFOUND         MAKE_DPHRESULT( 200 )#define DPERR_NOPLAYERS                 MAKE_DPHRESULT( 210 )#define DPERR_NOSESSIONS                MAKE_DPHRESULT( 220 )#define DPERR_SENDTOOBIG                MAKE_DPHRESULT( 230 )#define DPERR_TIMEOUT                   MAKE_DPHRESULT( 240 )#define DPERR_UNAVAILABLE               MAKE_DPHRESULT( 250 )#define DPERR_UNSUPPORTED               E_NOTIMPL#define DPERR_BUSY                      MAKE_DPHRESULT( 270 )#define DPERR_USERCANCEL                MAKE_DPHRESULT( 280 ) #define DPOPEN_OPENSESSION          0x00000001#define DPOPEN_CREATESESSION        0x00000002#define DPSEND_GUARANTEE            0x00000001#define DPSEND_HIGHPRIORITY         0x00000002#define DPSEND_TRYONCE              0x00000004#define DPRECEIVE_ALL               0x00000001#define DPRECEIVE_TOPLAYER          0x00000002#define DPRECEIVE_FROMPLAYER        0x00000004#define DPRECEIVE_PEEK              0x00000008#define DPCAPS_NAMESERVICE          0x00000001 // A name server is supported.#define DPCAPS_NAMESERVER           0x00000002 // You are the name server.#define DPCAPS_GUARANTEED           0x00000004 // SP's don't have to implement guarantees.#define DPENUMSESSIONS_AVAILABLE    0x00000001 // All games that match password (if given)                                               // and have openings.#define DPENUMSESSIONS_ALL          0x00000002#define DPENUMSESSIONS_PREVIOUS     0x00000004#define DPENUMPLAYERS_ALL           0x00000000#define DPENUMPLAYERS_PREVIOUS      0x00000004#define DPENUMPLAYERS_LOCAL         0x00000008#define DPENUMPLAYERS_REMOTE        0x00000010#define DPENUMPLAYERS_GROUP         0x00000020#define DPENUMPLAYERS_SESSION       0x00000080//// This flag is set on the enumsessions callback when the time out has occured.// This means that there is no session data for this callback.// If lpdwTimeOut is set to a non-zero value and the EnumSessionsCallback returns// TRUE then EnumSessions will continue until the next timeout occurs.// Timeouts are in milliseconds. #define DPESC_TIMEDOUT              0x00000001//// System message structures and types.//// System messages have a leading 4 byte type code to identify the message.// an app knows it is a system message because it is addressed 'To' player 0.//                                    #define DPSYS_ADDPLAYER               0x0003  // DPMSG_ADDPLAYER#define DPSYS_DELETEPLAYER            0x0005  // DPMSG_DELETEPLAYER#define DPSYS_ADDPLAYERTOGROUP        0x0007  // DPMSG_GROUPADD#define DPSYS_INVITE                  0x000e  // DPMSG_INVITE, Net only.#define DPSYS_DELETEGROUP             0x0020  // DPMSG_DELETEPLAYER#define DPSYS_DELETEPLAYERFROMGRP     0x0021  // DPMSG_GROUPDELETE#define DPSYS_SESSIONLOST             0x0031#define DPSYS_CONNECT                 0x484b  // DPMSG_GENERICtypedef struct{    DWORD       dwType;    DWORD       dwPlayerType;    DPID        dpId;    char        szLongName[DPLONGNAMELEN];    char        szShortName[DPSHORTNAMELEN];    DWORD       dwCurrentPlayers;}   DPMSG_ADDPLAYER;typedef DPMSG_ADDPLAYER DPMSG_ADDGROUP;typedef struct{    DWORD       dwType;    DPID        dpIdGroup;    DPID        dpIdPlayer;} DPMSG_GROUPADD;typedef DPMSG_GROUPADD DPMSG_GROUPDELETE;typedef struct{    DWORD       dwType;    DPID        dpId;} DPMSG_DELETEPLAYER;typedef struct{    DWORD           dwType;    DPSESSIONDESC   dpsDesc;} DPMSG_INVITE;typedef struct{    DWORD           dwType;} DPMSG_GENERIC;#pragma pack(pop)DEFINE_GUID( IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);#ifdef __cplusplus};#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -