📄 dplay.h
字号:
* This flag indicates that the session is private and requirs a password
* for EnumSessions as well as Open.
*/
#define DPSESSION_PRIVATE 0x00000200
/*
* This flag indicates that the session requires a password for joining.
*/
#define DPSESSION_PASSWORDREQUIRED 0x00000400
/*
* This flag tells DirectPlay to route all messages through the server
*/
#define DPSESSION_MULTICASTSERVER 0x00000800
/*
* This flag tells DirectPlay to only download information about the
* DPPLAYER_SERVERPLAYER.
*/
#define DPSESSION_CLIENTSERVER 0x00001000
/*
* This flag tells DirectPlay to use the protocol built into dplay
* for reliability and statistics all the time. When this bit is
* set, only other sessions with this bit set can join or be joined.
*/
#define DPSESSION_DIRECTPLAYPROTOCOL 0x00002000
/*
* This flag tells DirectPlay that preserving order of received
* packets is not important, when using reliable delivery. This
* will allow messages to be indicated out of order if preceding
* messages have not yet arrived. Otherwise DPLAY will wait for
* earlier messages before delivering later reliable messages.
*/
#define DPSESSION_NOPRESERVEORDER 0x00004000
/*
* This flag tells DirectPlay to optimize communication for latency
*/
#define DPSESSION_OPTIMIZELATENCY 0x00008000
/*
* This flag allows lobby launched games that aren't voice enabled
* to get voice capabilities.
*/
#define DPSESSION_ALLOWVOICERETRO 0x00010000
/*
* This flag supresses transmission of session desc changes.
* DPSESSION_NODATAMESSAGES was supposed to do that, but SetSessionDesc
* was ignoring the flag and some apps depended on the broken behavior, this
* flag allows applications to get the right behaviour without breaking apps depending
* on old broken behavior.
*/
#define DPSESSION_NOSESSIONDESCMESSAGES 0x00020000
/*
* DPNAME
* Used to hold the name of a DirectPlay entity
* like a player or a group
*/
typedef struct
{
DWORD dwSize; // Size of structure
DWORD dwFlags; // Not used. Must be zero.
union
{ // The short or friendly name
LPWSTR lpszShortName; // Unicode
LPSTR lpszShortNameA; // ANSI
};
union
{ // The long or formal name
LPWSTR lpszLongName; // Unicode
LPSTR lpszLongNameA; // ANSI
};
} DPNAME, FAR *LPDPNAME;
/*
* LPCDPNAME
* A constant pointer to DPNAME
*/
typedef const DPNAME FAR *LPCDPNAME;
/*
* DPCREDENTIALS
* Used to hold the user name and password of a DirectPlay user
*/
typedef struct
{
DWORD dwSize; // Size of structure
DWORD dwFlags; // Not used. Must be zero.
union
{ // User name of the account
LPWSTR lpszUsername; // Unicode
LPSTR lpszUsernameA; // ANSI
};
union
{ // Password of the account
LPWSTR lpszPassword; // Unicode
LPSTR lpszPasswordA; // ANSI
};
union
{ // Domain name of the account
LPWSTR lpszDomain; // Unicode
LPSTR lpszDomainA; // ANSI
};
} DPCREDENTIALS, FAR *LPDPCREDENTIALS;
typedef const DPCREDENTIALS FAR *LPCDPCREDENTIALS;
/*
* DPSECURITYDESC
* Used to describe the security properties of a DirectPlay
* session instance
*/
typedef struct
{
DWORD dwSize; // Size of structure
DWORD dwFlags; // Not used. Must be zero.
union
{ // SSPI provider name
LPWSTR lpszSSPIProvider; // Unicode
LPSTR lpszSSPIProviderA; // ANSI
};
union
{ // CAPI provider name
LPWSTR lpszCAPIProvider; // Unicode
LPSTR lpszCAPIProviderA; // ANSI
};
DWORD dwCAPIProviderType; // Crypto Service Provider type
DWORD dwEncryptionAlgorithm; // Encryption Algorithm type
} DPSECURITYDESC, FAR *LPDPSECURITYDESC;
typedef const DPSECURITYDESC FAR *LPCDPSECURITYDESC;
/*
* DPACCOUNTDESC
* Used to describe a user membership account
*/
typedef struct
{
DWORD dwSize; // Size of structure
DWORD dwFlags; // Not used. Must be zero.
union
{ // Account identifier
LPWSTR lpszAccountID; // Unicode
LPSTR lpszAccountIDA; // ANSI
};
} DPACCOUNTDESC, FAR *LPDPACCOUNTDESC;
typedef const DPACCOUNTDESC FAR *LPCDPACCOUNTDESC;
/*
* LPCGUID
* A constant pointer to a guid
*/
typedef const GUID FAR *LPCGUID;
/*
* DPLCONNECTION
* Used to hold all in the informaion needed to connect
* an application to a session or create a session
*/
typedef struct
{
DWORD dwSize; // Size of this structure
DWORD dwFlags; // Flags specific to this structure
LPDPSESSIONDESC2 lpSessionDesc; // Pointer to session desc to use on connect
LPDPNAME lpPlayerName; // Pointer to Player name structure
GUID guidSP; // GUID of the DPlay SP to use
LPVOID lpAddress; // Address for service provider
DWORD dwAddressSize; // Size of address data
} DPLCONNECTION, FAR *LPDPLCONNECTION;
/*
* LPCDPLCONNECTION
* A constant pointer to DPLCONNECTION
*/
typedef const DPLCONNECTION FAR *LPCDPLCONNECTION;
/*
* DPCHAT
* Used to hold the a DirectPlay chat message
*/
typedef struct
{
DWORD dwSize;
DWORD dwFlags;
union
{ // Message string
LPWSTR lpszMessage; // Unicode
LPSTR lpszMessageA; // ANSI
};
} DPCHAT, FAR * LPDPCHAT;
/*
* SGBUFFER
* Scatter Gather Buffer used for SendEx
*/
typedef struct
{
UINT len; // length of buffer data
PUCHAR pData; // pointer to buffer data
} SGBUFFER, *PSGBUFFER, FAR *LPSGBUFFER;
/****************************************************************************
*
* Prototypes for DirectPlay callback functions
*
****************************************************************************/
/*
* Callback for IDirectPlay2::EnumSessions
*/
typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK2)(
LPCDPSESSIONDESC2 lpThisSD,
LPDWORD lpdwTimeOut,
DWORD dwFlags,
LPVOID lpContext );
/*
* This flag is set on the EnumSessions callback dwFlags parameter when
* the time out has occurred. There will be no session data for this
* callback. If *lpdwTimeOut is set to a non-zero value and the
* EnumSessionsCallback function returns TRUE then EnumSessions will
* continue waiting until the next timeout occurs. Timeouts are in
* milliseconds.
*/
#define DPESC_TIMEDOUT 0x00000001
/*
* Callback for IDirectPlay2::EnumPlayers
* IDirectPlay2::EnumGroups
* IDirectPlay2::EnumGroupPlayers
*/
typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK2)(
DPID dpId,
DWORD dwPlayerType,
LPCDPNAME lpName,
DWORD dwFlags,
LPVOID lpContext );
/*
* Unicode callback for DirectPlayEnumerate
* This callback prototype will be used if compiling
* for Unicode strings
*/
typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)(
LPGUID lpguidSP,
LPWSTR lpSPName,
DWORD dwMajorVersion,
DWORD dwMinorVersion,
LPVOID lpContext);
/*
* ANSI callback for DirectPlayEnumerate
* This callback prototype will be used if compiling
* for ANSI strings
*/
typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACKA)(
LPGUID lpguidSP,
LPSTR lpSPName,
DWORD dwMajorVersion,
DWORD dwMinorVersion,
LPVOID lpContext);
/*
* Callback for IDirectPlay3(A)::EnumConnections
*/
typedef BOOL (FAR PASCAL * LPDPENUMCONNECTIONSCALLBACK)(
LPCGUID lpguidSP,
LPVOID lpConnection,
DWORD dwConnectionSize,
LPCDPNAME lpName,
DWORD dwFlags,
LPVOID lpContext);
/*
* API's
*/
#ifdef UNICODE
#define DirectPlayEnumerate DirectPlayEnumerateW
#else
#define DirectPlayEnumerate DirectPlayEnumerateA
#endif // UNICODE
extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACK, LPVOID );
extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk);
/****************************************************************************
*
* IDirectPlay2 (and IDirectPlay2A) Interface
*
****************************************************************************/
#undef INTERFACE
#define INTERFACE IDirectPlay2
DECLARE_INTERFACE_( IDirectPlay2, IUnknown )
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IDirectPlay2 methods ***/
STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
STDMETHOD(Close) (THIS) PURE;
STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE,LPVOID,DWORD,DWORD) PURE;
STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -