?? directplay.pas
字號:
dwCAPIProviderType: DWORD; // Crypto Service Provider type
dwEncryptionAlgorithm: DWORD; // Encryption Algorithm type
);
1 : (
lpszSSPIProviderA : PAnsiChar; // SSPI provider name
lpszCAPIProviderA : PAnsiChar; // CAPI provider name
);
2 : (
lpszSSPIProviderW : PWideChar; // SSPI provider name
lpszCAPIProviderW : PWideChar; // CAPI provider name
);
end;
(*
* DPACCOUNTDESC
* Used to describe a user membership account
*)
PDPAccountDesc = ^TDPAccountDesc;
TDPAccountDesc = packed record
dwSize: DWORD; // Size of structure
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0 : (lpszAccountID : PCharAW); // Account identifier
1 : (lpszAccountIDA : PAnsiChar);
2 : (lpszAccountIDW : PWideChar);
end;
(*
* TDPLConnection
* Used to hold all in the informaion needed to connect
* an application to a session or create a session
*)
PDPLConnection = ^TDPLConnection;
TDPLConnection = packed record
dwSize: DWORD; // Size of this structure
dwFlags: DWORD; // Flags specific to this structure
lpSessionDesc: PDPSessionDesc2; // Pointer to session desc to use on connect
lpPlayerName: PDPName; // Pointer to Player name structure
guidSP: TGUID; // GUID of the DPlay SP to use
lpAddress: Pointer; // Address for service provider
dwAddressSize: DWORD; // Size of address data
end;
(*
* TDPChat
* Used to hold the a DirectPlay chat message
*)
PDPChat = ^TDPChat;
TDPChat = packed record
dwSize: DWORD;
dwFlags: DWORD;
case Integer of
0 : (lpszMessage : PCharAW); // Message string
1 : (lpszMessageA : PAnsiChar);
2 : (lpszMessageW : PWideChar);
end;
(*
* TSGBuffer
* Scatter Gather Buffer used for SendEx
*)
PSGBuffer = ^TSGBuffer;
TSGBuffer = packed record
len: UINT;
pData: PUCHAR;
end;
(****************************************************************************
*
* Prototypes for DirectPlay callback functions
*
****************************************************************************)
(*
* Callback for IDirectPlay2::EnumSessions
*)
TDPEnumSessionsCallback2 = function(lpThisSD: PDPSessionDesc2;
var lpdwTimeOut: DWORD; dwFlags: DWORD; lpContext: Pointer) : BOOL; stdcall;
const
(*
* 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.
*)
DPESC_TIMEDOUT = $00000001;
type
(*
* Callback for IDirectPlay2.EnumPlayers
* IDirectPlay2.EnumGroups
* IDirectPlay2.EnumGroupPlayers
*)
TDPEnumPlayersCallback2 = function(DPID: TDPID; dwPlayerType: DWORD;
const lpName: TDPName; dwFlags: DWORD; lpContext: Pointer) : BOOL; stdcall;
(*
* ANSI callback for DirectPlayEnumerate
* This callback prototype will be used if compiling
* for ANSI strings
*)
TDPEnumDPCallbackA = function(const lpguidSP: TGUID; lpSPName: PAnsiChar;
dwMajorVersion: DWORD; dwMinorVersion: DWORD; lpContext: Pointer) : BOOL; stdcall;
(*
* Unicode callback for DirectPlayEnumerate
* This callback prototype will be used if compiling
* for Unicode strings
*)
TDPEnumDPCallbackW = function(const lpguidSP: TGUID; lpSPName: PWideChar;
dwMajorVersion: DWORD; dwMinorVersion: DWORD; lpContext: Pointer) : BOOL; stdcall;
(*
* Callback for DirectPlayEnumerate
*)
{$IFDEF UNICODE}
TDPEnumDPCallback = TDPEnumDPCallbackW;
{$ELSE}
TDPEnumDPCallback = TDPEnumDPCallbackA;
{$ENDIF}
(*
* Callback for IDirectPlay3(A/W).EnumConnections
*)
TDPEnumConnectionsCallback = function(const lpguidSP: TGUID;
lpConnection: Pointer; dwConnectionSize: DWORD; const lpName: TDPName;
dwFlags: DWORD; lpContext: Pointer) : BOOL; stdcall;
(*
* API's
*)
var
DirectPlayEnumerate : function (lpEnumDPCallback: TDPEnumDPCallback;
lpContext: Pointer) : HResult; stdcall;
DirectPlayEnumerateA : function (lpEnumDPCallback: TDPEnumDPCallbackA;
lpContext: Pointer) : HResult; stdcall;
DirectPlayEnumerateW : function (lpEnumDPCallback: TDPEnumDPCallbackW;
lpContext: Pointer) : HResult; stdcall;
(****************************************************************************
*
* IDirectPlay2 (and IDirectPlay2A) Interface
*
****************************************************************************)
type
IDirectPlay2AW = interface (IUnknown)
(*** IDirectPlay2 methods ***)
function AddPlayerToGroup(idGroup: TDPID; idPlayer: TDPID) : HResult; stdcall;
function Close: HResult; stdcall;
function CreateGroup(out lpidGroup: TDPID; lpGroupName: PDPName;
lpData: Pointer; dwDataSize: DWORD; dwFlags: DWORD) : HResult; stdcall;
function CreatePlayer(out lpidPlayer: TDPID; pPlayerName: PDPName;
hEvent: THandle; lpData: Pointer; dwDataSize: DWORD; dwFlags: DWORD) : HResult; stdcall;
function DeletePlayerFromGroup(idGroup: TDPID; idPlayer: TDPID) : HResult; stdcall;
function DestroyGroup(idGroup: TDPID) : HResult; stdcall;
function DestroyPlayer(idPlayer: TDPID) : HResult; stdcall;
function EnumGroupPlayers(idGroup: TDPID; lpguidInstance: PGUID;
lpEnumPlayersCallback2: TDPEnumPlayersCallback2; lpContext: Pointer;
dwFlags: DWORD) : HResult; stdcall;
function EnumGroups(lpguidInstance: PGUID; lpEnumPlayersCallback2:
TDPEnumPlayersCallback2; lpContext: Pointer; dwFlags: DWORD) : HResult; stdcall;
function EnumPlayers(lpguidInstance: PGUID; lpEnumPlayersCallback2:
TDPEnumPlayersCallback2; lpContext: Pointer; dwFlags: DWORD) : HResult; stdcall;
function EnumSessions(const lpsd: TDPSessionDesc2; dwTimeout: DWORD;
lpEnumSessionsCallback2: TDPEnumSessionsCallback2; lpContext: Pointer;
dwFlags: DWORD) : HResult; stdcall;
function GetCaps(var lpDPCaps: TDPCaps; dwFlags: DWORD) : HResult; stdcall;
function GetGroupData(idGroup: TDPID; lpData: Pointer; var lpdwDataSize: DWORD;
dwFlags: DWORD) : HResult; stdcall;
function GetGroupName(idGroup: TDPID; lpData: Pointer; var lpdwDataSize: DWORD) :
HResult; stdcall;
function GetMessageCount(idPlayer: TDPID; var lpdwCount: DWORD) : HResult; stdcall;
function GetPlayerAddress(idPlayer: TDPID; lpAddress: Pointer;
var lpdwAddressSize: DWORD) : HResult; stdcall;
function GetPlayerCaps(idPlayer: TDPID; var lpPlayerCaps: TDPCaps;
dwFlags: DWORD) : HResult; stdcall;
function GetPlayerData(idPlayer: TDPID; lpData: Pointer; var lpdwDataSize: DWORD;
dwFlags: DWORD) : HResult; stdcall;
function GetPlayerName(idPlayer: TDPID; lpData: Pointer; var lpdwDataSize: DWORD) : HResult; stdcall;
function GetSessionDesc(lpData: Pointer; var lpdwDataSize: DWORD) : HResult; stdcall;
function Initialize(const lpGUID: TGUID) : HResult; stdcall;
function Open(var lpsd: TDPSessionDesc2; dwFlags: DWORD) : HResult; stdcall;
function Receive(var lpidFrom: TDPID; var lpidTo: TDPID; dwFlags: DWORD;
lpData: Pointer; var lpdwDataSize: DWORD) : HResult; stdcall;
function Send(idFrom: TDPID; lpidTo: TDPID; dwFlags: DWORD; var lpData;
lpdwDataSize: DWORD) : HResult; stdcall;
function SetGroupData(idGroup: TDPID; lpData: Pointer; dwDataSize: DWORD;
dwFlags: DWORD) : HResult; stdcall;
function SetGroupName(idGroup: TDPID; lpGroupName: PDPName;
dwFlags: DWORD) : HResult; stdcall;
function SetPlayerData(idPlayer: TDPID; lpData: Pointer; dwDataSize: DWORD;
dwFlags: DWORD) : HResult; stdcall;
function SetPlayerName(idPlayer: TDPID; lpPlayerName: PDPName;
dwFlags: DWORD) : HResult; stdcall;
function SetSessionDesc(var lpSessDesc: TDPSessionDesc2; dwFlags: DWORD) :
HResult; stdcall;
end;
IDirectPlay2W = interface (IDirectPlay2AW)
['{2B74F7C0-9154-11CF-A9CD-00AA006886E3}']
end;
IDirectPlay2A = interface (IDirectPlay2AW)
['{9d460580-a822-11cf-960c-0080c7534e82}']
end;
{$IFDEF UNICODE}
IDirectPlay2 = IDirectPlay2W;
{$ELSE}
IDirectPlay2 = IDirectPlay2A;
{$ENDIF}
(****************************************************************************
*
* IDirectPlay3 (and IDirectPlay3A) Interface
*
****************************************************************************)
IDirectPlay3AW = interface (IDirectPlay2AW)
(*** IDirectPlay3 methods ***)
function AddGroupToGroup(idParentGroup: TDPID; idGroup: TDPID) : HResult; stdcall;
function CreateGroupInGroup(idParentGroup: TDPID; var lpidGroup: TDPID;
lpGroupName: PDPName; lpData: Pointer; dwDataSize: DWORD;
dwFlags: DWORD) : HResult; stdcall;
function DeleteGroupFromGroup(idParentGroup: TDPID; idGroup: TDPID) : HResult; stdcall;
function EnumConnections(lpguidApplication: PGUID;
lpEnumCallback: TDPEnumConnectionsCallback; lpContext: Pointer;
dwFlags: DWORD) : HResult; stdcall;
function EnumGroupsInGroup(idGroup: TDPID; lpguidInstance: PGUID;
lpEnumPlayersCallback2: TDPEnumPlayersCallback2; lpContext: Pointer;
dwFlags: DWORD) : HResult; stdcall;
function GetGroupConnectionSettings(dwFlags: DWORD; idGroup: TDPID;
lpData: Pointer; var lpdwDataSize: DWORD) : HResult; stdcall;
function InitializeConnection(lpConnection: Pointer; dwFlags: DWORD) : HResult; stdcall;
function SecureOpen(var lpsd: TDPSessionDesc2; dwFlags: DWORD;
var lpSecurity: TDPSecurityDesc; var lpCredentials: TDPCredentials) : HResult; stdcall;
function SendChatMessage(idFrom: TDPID; idTo: TDPID; dwFlags: DWORD;
var lpChatMessage: TDPChat) : HResult; stdcall;
function SetGroupConnectionSettings(dwFlags: DWORD; idGroup: TDPID;
var lpConnection: TDPLConnection) : HResult; stdcall;
function StartSession(dwFlags: DWORD; idGroup: TDPID) : HResult; stdcall;
function GetGroupFlags(idGroup: TDPID; out lpdwFlags: DWORD) : HResult; stdcall;
function GetGroupParent(idGroup: TDPID; out lpidParent: TDPID) : HResult; stdcall;
function GetPlayerAccount(idPlayer: TDPID; dwFlags: DWORD; var lpData;
var lpdwDataSize: DWORD) : HResult; stdcall;
function GetPlayerFlags(idPlayer: TDPID; out lpdwFlags: DWORD) : HResult; stdcall;
end;
IDirectPlay3W = interface (IDirectPlay3AW)
['{133EFE40-32DC-11D0-9CFB-00A0C90A43CB}']
end;
IDirectPlay3A = interface (IDirectPlay3AW)
['{133efe41-32dc-11d0-9cfb-00a0c90a43cb}']
end;
{$IFDEF UNICODE}
IDirectPlay3 = IDirectPlay3W;
{$ELSE}
IDirectPlay3 = IDirectPlay3A;
{$ENDIF}
(****************************************************************************
*
* IDirectPlay4 (and IDirectPlay4A) Interface
*
****************************************************************************)
IDirectPlay4AW = interface (IDirectPlay3AW)
(*** IDirectPlay4 methods ***)
function GetGroupOwner(idGroup: TDPID; out idOwner: TDPID) : HResult; stdcall;
function SetGroupOwner(idGroup: TDPID; idOwner: TDPID) : HResult; stdcall;
function SendEx(idFrom: TDPID; idTo: TDPID; dwFlags: DWORD; lpData: Pointer;
dwDataSize: DWORD; dwPriority: DWORD; dwTimeout: DWORD;
lpContext: Pointer; lpdwMsgId: PDWORD) : HResult; stdcall;
function GetMessageQueue(idFrom: TDPID; idTo: TDPID; dwFlags: DWORD;
lpdwNumMsgs: PDWORD; lpdwNumBytes: PDWORD) : HResult; stdcall;
function CancelMessage(dwMessageID: DWORD; dwFlags: DWORD) : HResult; stdcall;
function CancelPriority(dwMinPriority: DWORD; dwMaxPriority: DWORD; dwFlags: DWORD) : HResult; stdcall;
end;
IDirectPlay4W = interface (IDirectPlay4AW)
['{0ab1c530-4745-11D1-a7a1-0000f803abfc}']
end;
IDirectPlay4A = interface (IDirectPlay4AW)
['{0ab1c531-4745-11D1-a7a1-0000f803abfc}']
end;
{$IFDEF UNICODE}
IDirectPlay4 = IDirectPlay4W;
{$ELSE}
IDirectPlay4 = IDirectPlay4A;
{$ENDIF}
const
(****************************************************************************
*
* EnumConnections API flags
*
****************************************************************************)
(*
* Enumerate Service Providers
*)
DPCONNECTION_DIRECTPLAY = $00000001;
(*
* Enumerate Lobby Providers
*)
DPCONNECTION_DIRECTPLAYLOBBY = $00000002;
(****************************************************************************
*
* EnumPlayers API flags
*
****************************************************************************)
(*
* Enumerate all players in the current session
*)
DPENUMPLAYERS_ALL = $00000000;
DPENUMGROUPS_ALL = DPENUMPLAYERS_ALL;
(*
* Enumerate only local (created by this application) players
* or groups
*)
DPENUMPLAYERS_LOCAL = $00000008;
DPENUMGROUPS_LOCAL = DPENUMPLAYERS_LOCAL;
(*
* Enumerate only remote (non-local) players
* or groups
*)
DPENUMPLAYERS_REMOTE = $00000010;
DPENUMGROUPS_REMOTE = DPENUMPLAYERS_REMOTE;
(*
* Enumerate groups along with the players
*)
DPENUMPLAYERS_GROUP = $00000020;
(*
* Enumerate players or groups in another session
* (must supply lpguidInstance)
*)
DPENUMPLAYERS_SESSION = $00000080;
DPENUMGROUPS_SESSION = DPENUMPLAYERS_SESSION;
(*
* Enumerate server players
*)
DPENUMPLAYERS_SERVERPLAYER = $00000100;
(*
* Enumerate spectator players
*)
DPENUMPLAYERS_SPECTATOR = $00000200;
(*
* Enumerate shortcut groups
*)
DPENUMGROUPS_SHORTCUT = $00000400;
(*
* Enumerate staging area groups
*)
DPENUMGROUPS_STAGINGAREA = $00000800;
(*
* Enumerate hidden groups
*)
DPENUMGROUPS_HIDDEN = $00001000;
(*
* Enumerate the group's owner
*)
DPENUMPLAYERS_OWNER = $00002000;
(****************************************************************************
*
* CreatePlayer API flags
*
****************************************************************************)
(*
* This flag indicates that this player should be designated
* the server player. The app should specify this at CreatePlayer.
*)
DPPLAYER_SERVERPLAYER = DPENUMPLAYERS_SERVERPLAYER;
(*
* This flag indicates that this player should be designated
* a spectator. The app should specify this at CreatePlayer.
*)
DPPLAYER_SPECTATOR = DPENUMPLAYERS_SPECTATOR;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -