📄 dplay.h
字号:
/*==========================================================================;
*
* Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved.
*
* File: dplay.h
* Content: DirectPlay include file
*
***************************************************************************/
#ifndef __DPLAY_INCLUDED__
#define __DPLAY_INCLUDED__
#include <ole2.h> // for DECLARE_INTERFACE and HRESULT
/* avoid warnings in MSVC at Level4 */
#pragma warning(disable:4201)
/*
* Some types
*/
#ifndef _WIN64
#define DWORD_PTR DWORD
#endif
typedef LPVOID (*LPRGLPVOID)[];
typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID;
#define VOL volatile
typedef VOID *VOL LPVOIDV;
#define _FACDP 0x877
#define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code )
#ifdef __cplusplus
extern "C" {
#endif
/*
* GUIDS used by DirectPlay objects
*/
DEFINE_GUID(IID_IDirectPlay2, 0x2b74f7c0, 0x9154, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
DEFINE_GUID(IID_IDirectPlay2A,0x9d460580, 0xa822, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
DEFINE_GUID(IID_IDirectPlay3, 0x133efe40, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
DEFINE_GUID(IID_IDirectPlay3A,0x133efe41, 0x32dc, 0x11d0, 0x9c, 0xfb, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
DEFINE_GUID(IID_IDirectPlay4, 0xab1c530, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
DEFINE_GUID(IID_IDirectPlay4A,0xab1c531, 0x4745, 0x11d1, 0xa7, 0xa1, 0x0, 0x0, 0xf8, 0x3, 0xab, 0xfc);
// {D1EB6D20-8923-11d0-9D97-00A0C90A43CB}
DEFINE_GUID(CLSID_DirectPlay,0xd1eb6d20, 0x8923, 0x11d0, 0x9d, 0x97, 0x0, 0xa0, 0xc9, 0xa, 0x43, 0xcb);
/*
* GUIDS used by Service Providers shipped with DirectPlay
* Use these to identify Service Provider returned by EnumConnections
*/
// GUID for IPX service provider
// {685BC400-9D2C-11cf-A9CD-00AA006886E3}
DEFINE_GUID(DPSPGUID_IPX,
0x685bc400, 0x9d2c, 0x11cf, 0xa9, 0xcd, 0x0, 0xaa, 0x0, 0x68, 0x86, 0xe3);
// GUID for TCP/IP service provider
// 36E95EE0-8577-11cf-960C-0080C7534E82
DEFINE_GUID(DPSPGUID_TCPIP,
0x36E95EE0, 0x8577, 0x11cf, 0x96, 0xc, 0x0, 0x80, 0xc7, 0x53, 0x4e, 0x82);
// GUID for Serial service provider
// {0F1D6860-88D9-11cf-9C4E-00A0C905425E}
DEFINE_GUID(DPSPGUID_SERIAL,
0xf1d6860, 0x88d9, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
// GUID for Modem service provider
// {44EAA760-CB68-11cf-9C4E-00A0C905425E}
DEFINE_GUID(DPSPGUID_MODEM,
0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
/****************************************************************************
*
* DirectPlay Structures
*
* Various structures used to invoke DirectPlay.
*
****************************************************************************/
#ifndef IDIRECTPLAY2_OR_GREATER
typedef struct IDirectPlay FAR *LPDIRECTPLAY;
#else
typedef struct IUnknown FAR *LPDIRECTPLAY;
#endif
typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2;
typedef struct IDirectPlay2 FAR *LPDIRECTPLAY2A;
typedef struct IDirectPlay2 IDirectPlay2A;
typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3;
typedef struct IDirectPlay3 FAR *LPDIRECTPLAY3A;
typedef struct IDirectPlay3 IDirectPlay3A;
typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4;
typedef struct IDirectPlay4 FAR *LPDIRECTPLAY4A;
typedef struct IDirectPlay4 IDirectPlay4A;
/*
* DPID
* DirectPlay player and group ID
*/
typedef DWORD DPID, FAR *LPDPID;
/*
* DPID that system messages come from
*/
#define DPID_SYSMSG 0
/*
* DPID representing all players in the session
*/
#define DPID_ALLPLAYERS 0
/*
* DPID representing the server player
*/
#define DPID_SERVERPLAYER 1
/*
* DPID representing the maxiumum ID in the range of DPID's reserved for
* use by DirectPlay.
*/
#define DPID_RESERVEDRANGE 100
/*
* The player ID is unknown (used with e.g. DPSESSION_NOMESSAGEID)
*/
#define DPID_UNKNOWN 0xFFFFFFFF
/*
* DPCAPS
* Used to obtain the capabilities of a DirectPlay object
*/
typedef struct
{
DWORD dwSize; // Size of structure, in bytes
DWORD dwFlags; // DPCAPS_xxx flags
DWORD dwMaxBufferSize; // Maximum message size, in bytes, for this service provider
DWORD dwMaxQueueSize; // Obsolete.
DWORD dwMaxPlayers; // Maximum players/groups (local + remote)
DWORD dwHundredBaud; // Bandwidth in 100 bits per second units;
// i.e. 24 is 2400, 96 is 9600, etc.
DWORD dwLatency; // Estimated latency; 0 = unknown
DWORD dwMaxLocalPlayers; // Maximum # of locally created players allowed
DWORD dwHeaderLength; // Maximum header length, in bytes, on messages
// added by the service provider
DWORD dwTimeout; // Service provider's suggested timeout value
// This is how long DirectPlay will wait for
// responses to system messages
} DPCAPS, FAR *LPDPCAPS;
/*
* This DirectPlay object is the session host. If the host exits the
* session, another application will become the host and receive a
* DPSYS_HOST system message.
*/
#define DPCAPS_ISHOST 0x00000002
/*
* The service provider bound to this DirectPlay object can optimize
* group messaging.
*/
#define DPCAPS_GROUPOPTIMIZED 0x00000008
/*
* The service provider bound to this DirectPlay object can optimize
* keep alives (see DPSESSION_KEEPALIVE)
*/
#define DPCAPS_KEEPALIVEOPTIMIZED 0x00000010
/*
* The service provider bound to this DirectPlay object can optimize
* guaranteed message delivery.
*/
#define DPCAPS_GUARANTEEDOPTIMIZED 0x00000020
/*
* This DirectPlay object supports guaranteed message delivery.
*/
#define DPCAPS_GUARANTEEDSUPPORTED 0x00000040
/*
* This DirectPlay object supports digital signing of messages.
*/
#define DPCAPS_SIGNINGSUPPORTED 0x00000080
/*
* This DirectPlay object supports encryption of messages.
*/
#define DPCAPS_ENCRYPTIONSUPPORTED 0x00000100
/*
* This DirectPlay player was created on this machine
*/
#define DPPLAYERCAPS_LOCAL 0x00000800
/*
* Current Open settings supports all forms of Cancel
*/
#define DPCAPS_ASYNCCANCELSUPPORTED 0x00001000
/*
* Current Open settings supports CancelAll, but not Cancel
*/
#define DPCAPS_ASYNCCANCELALLSUPPORTED 0x00002000
/*
* Current Open settings supports Send Timeouts for sends
*/
#define DPCAPS_SENDTIMEOUTSUPPORTED 0x00004000
/*
* Current Open settings supports send priority
*/
#define DPCAPS_SENDPRIORITYSUPPORTED 0x00008000
/*
* Current Open settings supports DPSEND_ASYNC flag
*/
#define DPCAPS_ASYNCSUPPORTED 0x00010000
/*
* DPSESSIONDESC2
* Used to describe the properties of a DirectPlay
* session instance
*/
typedef struct
{
DWORD dwSize; // Size of structure
DWORD dwFlags; // DPSESSION_xxx flags
GUID guidInstance; // ID for the session instance
GUID guidApplication; // GUID of the DirectPlay application.
// GUID_NULL for all applications.
DWORD dwMaxPlayers; // Maximum # players allowed in session
DWORD dwCurrentPlayers; // Current # players in session (read only)
union
{ // Name of the session
LPWSTR lpszSessionName; // Unicode
LPSTR lpszSessionNameA; // ANSI
};
union
{ // Password of the session (optional)
LPWSTR lpszPassword; // Unicode
LPSTR lpszPasswordA; // ANSI
};
DWORD_PTR dwReserved1; // Reserved for future MS use.
DWORD_PTR dwReserved2;
DWORD_PTR dwUser1; // For use by the application
DWORD_PTR dwUser2;
DWORD_PTR dwUser3;
DWORD_PTR dwUser4;
} DPSESSIONDESC2, FAR *LPDPSESSIONDESC2;
typedef DPSESSIONDESC2 * VOL LPDPSESSIONDESC2_V;
/*
* LPCDPSESSIONDESC2
* A constant pointer to DPSESSIONDESC2
*/
typedef const DPSESSIONDESC2 FAR *LPCDPSESSIONDESC2;
/*
* Applications cannot create new players in this session.
*/
#define DPSESSION_NEWPLAYERSDISABLED 0x00000001
/*
* If the DirectPlay object that created the session, the host,
* quits, then the host will attempt to migrate to another
* DirectPlay object so that new players can continue to be created
* and new applications can join the session.
*/
#define DPSESSION_MIGRATEHOST 0x00000004
/*
* This flag tells DirectPlay not to set the idPlayerTo and idPlayerFrom
* fields in player messages. This cuts two DWORD's off the message
* overhead.
*/
#define DPSESSION_NOMESSAGEID 0x00000008
/*
* This flag tells DirectPlay to not allow any new applications to
* join the session. Applications already in the session can still
* create new players.
*/
#define DPSESSION_JOINDISABLED 0x00000020
/*
* This flag tells DirectPlay to detect when remote players
* exit abnormally (e.g. their computer or modem gets unplugged)
*/
#define DPSESSION_KEEPALIVE 0x00000040
/*
* This flag tells DirectPlay not to send a message to all players
* when a players remote data changes
*/
#define DPSESSION_NODATAMESSAGES 0x00000080
/*
* This flag indicates that the session belongs to a secure server
* and needs user authentication
*/
#define DPSESSION_SECURESERVER 0x00000100
/*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -