📄 dplay.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 + -