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

📄 directplay8.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  PDPNMsg_Server_Info = ^TDPNMsg_Server_Info;
  TDPNMsg_Server_Info = packed record
    dwSize          : DWORD; 	    // Size of this structure
    dpnidServer     : TDPNID;	    // DPNID of server
    pvPlayerContext : Pointer;	    // Player context value
  end;

//
// Terminated session structure for message handler
// (DPN_MSGID_TERMINATE_SESSION)
//
  PDPNMsg_Terminate_Session = ^TDPNMsg_Terminate_Session;
  TDPNMsg_Terminate_Session = packed record
    dwSize              : DWORD;    	// Size of this structure
    hResultCode         : HResult;  	// Reason
    pvTerminateData     : Pointer;	// Data passed from Host/Server
    dwTerminateDataSize : DWORD;        // Size (in bytes) of pvTerminateData
  end;

(****************************************************************************
 *
 * DirectPlay8 Forward Declarations For External Types
 *
 ****************************************************************************)
type
  IDirectPlay8Peer                = interface;
  IDirectPlay8Server              = interface;
  IDirectPlay8Client              = interface;

(****************************************************************************
 *
 * DirectPlay8 Application Interfaces
 *
 ****************************************************************************)

//
// COM definition for DirectPlay8 Client interface
//
  IDirectPlay8Client = interface (IUnknown)
    ['{5102DACD-241B-11d3-AEA7-006097B01411}']
    function Initialize (pvUserContext: Pointer; pfn: TDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
    function EnumServiceProviders (pguidServiceProvider, pguidApplication: PGUID;
        pSPInfoBuffer: PDPN_Service_Provider_Info; var pcbEnumData: DWORD;
        var pcReturned: DWORD; dwFlags : DWORD): HResult; stdcall;
    function EnumHosts (var pApplicationDesc: TDPN_Application_Desc;
        pAddrHost, pDeviceInfo: IDirectPlay8Address; pvUserEnumData: Pointer;
        dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut: DWORD;
        pvUserContext: Pointer; pAsyncHandle : PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function CancelAsyncOperation (hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function Connect (var pdnAppDesc: TDPN_Application_Desc;
        pAddrHost, pDeviceInfo: IDirectPlay8Address; pdnSecurity: PDPN_Security_Desc;
        pdnCredentials: PDPN_Security_Credentials; pvUserConnectData: Pointer;
        dwUserConnectDataSize: DWORD; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function Send (const prgBufferDesc: TDPN_Buffer_Desc; cBufferDesc, dwTimeOut: DWORD;
        pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetSendQueueInfo (pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
    function GetApplicationDesc (pAppDescBuffer: PDPN_Application_Desc;
        var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function SetClientInfo (const pdpnPlayerInfo: TDPN_Player_Info; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetServerInfo (pdpnPlayerInfo: PDPN_Player_Info; var pdwSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function GetServerAddress (out pAddress: IDirectPlay8Address; dwFlags: DWORD): HResult; stdcall;
    function Close (dwFlags: DWORD): HResult; stdcall;
    function ReturnBuffer (hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetCaps (var pdpCaps: TDPN_Caps; dwFlags: DWORD): HResult; stdcall;
    function SetCaps (const pdpCaps: TDPN_Caps; dwFlags: DWORD): HResult; stdcall;
    function SetSPCaps (const pguidSP: TGUID; const pdpnSPCaps: TDPN_SP_Caps): HResult; stdcall;
    function GetSPCaps (const pguidSP: TGUID; var pdpnSPCaps: TDPN_SP_Caps; dwFlags: DWORD): HResult; stdcall;
    function GetConnectionInfo (var pdpConnectionInfo: TDPN_Connection_Info; dwFlags: DWORD): HResult; stdcall;
    function RegisterLobby (dpnHandle: TDPNHandle;
       pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
  end;

//
// COM definition for DirectPlay8 Server interface
//
  IDirectPlay8Server = interface (IUnknown)
    ['{5102DACE-241B-11d3-AEA7-006097B01411}']
    function Initialize (pvUserContext: Pointer; pfn: TDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
    function EnumServiceProviders (pguidServiceProvider, pguidApplication: PGUID;
        pSPInfoBuffer: PDPN_Service_Provider_Info; var pcbEnumData: DWORD;
        var pcReturned: DWORD; dwFlags : DWORD): HResult; stdcall;
    function CancelAsyncOperation (hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetSendQueueInfo (dpnid: TDPNID; pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
    function GetApplicationDesc (pAppDescBuffer: PDPN_Application_Desc;
        var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function SetServerInfo (var pdpnPlayerInfo: TDPN_Player_Info; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetClientInfo (dpnid: TDPNID; pdpnPlayerInfo: PDPN_Player_Info;
        pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall;
    function GetClientAddress (dpnid: TDPNID; out pAddress: IDirectPlay8Address;
        dwFlags: DWORD): HResult; stdcall;
    function GetLocalHostAddresses (prgpAddress: PIDirectPlay8Addresses;
        var pcAddress: DWORD; dwFlags: DWORD): HResult; stdcall;
    function SetApplicationDesc (const pad: TDPN_Application_Desc; dwFlags: DWORD): HResult; stdcall;
    function Host (var pdnAppDesc: TDPN_Application_Desc;
        prgpDeviceInfo: PIDirectPlay8Addresses; cDeviceInfo: DWORD;
        pdpSecurity: PDPN_Security_Desc; pdpCredentials: PDPN_Security_Credentials;
        pvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
    function SendTo (dpnid: TDPNID; const pBufferDesc: TDPN_Buffer_Desc;
        cBufferDesc, dwTimeOut: DWORD; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function CreateGroup (const pdpnGroupInfo: TDPN_Group_Info; pvGroupContext: Pointer;
        pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function DestroyGroup (idGroup: TDPNID; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function AddPlayerToGroup (idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function RemovePlayerFromGroup (idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function SetGroupInfo (dpnid: TDPNID; const pdpnGroupInfo: TDPN_Group_Info;
        pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetGroupInfo (dpnid: TDPNID; pdpnGroupInfo: PDPN_Group_Info;
        var pdwSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function EnumPlayersAndGroups (prgdpnid: PDPNID;
        var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
    function EnumGroupMembers (dpnid: TDPNID; prgdpnid: PDPNID;
        var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
    function Close (dwFlags: DWORD): HResult; stdcall;
    function DestroyClient (dpnidClient: TDPNID; pDestroyInfo: Pointer;
        dwDestroyInfoSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function ReturnBuffer (hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetPlayerContext (dpnid: TDPNID; var ppvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
    function GetGroupContext (dpnid: TDPNID; var ppvGroupContext: Pointer; dwFlags: DWORD): HResult; stdcall;
    function GetCaps (var pdpCaps: TDPN_Caps; dwFlags: DWORD): HResult; stdcall;
    function SetCaps (const pdpCaps: TDPN_Caps; dwFlags: DWORD): HResult; stdcall;
    function SetSPCaps (const pguidSP: TGUID; const pdpnSPCaps: TDPN_SP_Caps): HResult; stdcall;
    function GetSPCaps (const pguidSP: TGUID; var pdpnSPCaps: TDPN_SP_Caps; dwFlags: DWORD): HResult; stdcall;
    function GetConnectionInfo (dpnidEndPoint: TDPNID;
       var pdpConnectionInfo: TDPN_Connection_Info; dwFlags: DWORD): HResult; stdcall;
    function RegisterLobby (dpnHandle: TDPNHandle;
       pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
  end;

//
// COM definition for DirectPlay8 Peer interface
//
  IDirectPlay8Peer = interface (IUnknown)
    ['{5102DACF-241B-11d3-AEA7-006097B01411}']
    function Initialize (pvUserContext: Pointer; pfn: TDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
    function EnumServiceProviders (pguidServiceProvider, pguidApplication: PGUID;
        pSPInfoBuffer: PDPN_Service_Provider_Info; var pcbEnumData: DWORD;
        var pcReturned: DWORD; dwFlags : DWORD): HResult; stdcall;
    function CancelAsyncOperation (hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function Connect (const pdnAppDesc: PDPN_Application_Desc;
        pHostAddr, pDeviceInfo: IDirectPlay8Address; pdnSecurity: PDPN_Security_Desc;
        pdnCredentials: PDPN_Security_Credentials; pvUserConnectData: Pointer;
        dwUserConnectDataSize: DWORD; pvPlayerContext: Pointer;
        pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function SendTo (dpnid: TDPNID; const pBufferDesc: TDPN_Buffer_Desc;
        cBufferDesc, dwTimeOut: DWORD; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetSendQueueInfo (pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
    function Host (const pdnAppDesc: PDPN_Application_Desc;
        prgpDeviceInfo: PIDirectPlay8Addresses; cDeviceInfo: DWORD;
        pdpSecurity: PDPN_Security_Desc; pdpCredentials: PDPN_Security_Credentials;
        pvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
    function GetApplicationDesc (pAppDescBuffer: PDPN_Application_Desc;
        var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function SetApplicationDesc (const pad: TDPN_Application_Desc; dwFlags: DWORD): HResult; stdcall;
    function CreateGroup (const pdpnGroupInfo: TDPN_Group_Info; pvGroupContext: Pointer;
        pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function DestroyGroup (idGroup: TDPNID; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function AddPlayerToGroup (idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function RemovePlayerFromGroup (idGroup, idClient: TDPNID; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function SetGroupInfo (dpnid: TDPNID; const pdpnGroupInfo: TDPN_Group_Info;
        pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetGroupInfo (dpnid: TDPNID; pdpnGroupInfo: PDPN_Group_Info;
        var pdwSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function EnumPlayersAndGroups (prgdpnid: PDPNID;
        var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
    function EnumGroupMembers (dpnid: TDPNID; prgdpnid: PDPNID;
        var pcdpnid: DWORD; dwFlags: DWORD): HResult; stdcall;
    function SetPeerInfo (const pdpnPlayerInfo: PDPN_Player_Info; pvAsyncContext: Pointer;
        phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall; stdcall;
    function GetPeerInfo (dpnid: TDPNID; pdpnPlayerInfo: PDPN_Player_Info;
        var pdwSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function GetPeerAddress (dpnid: TDPNID; out pAddress: IDirectPlay8Address;
        dwFlags: DWORD): HResult; stdcall;
    function GetLocalHostAddresses (prgpAddress: PIDirectPlay8Addresses;
        var pcAddress: DWORD; dwFlags: DWORD): HResult; stdcall;
    function Close (dwFlags: DWORD): HResult; stdcall;
    function EnumHosts (const pApplicationDesc: TDPN_Application_Desc;
        pAddrHost, pDeviceInfo: IDirectPlay8Address; pvUserEnumData: Pointer;
        dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut: DWORD;
        pvUserContext: Pointer; pAsyncHandle : PDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function DestroyPeer (dpnidClient: TDPNID; pDestroyInfo: Pointer;
        dwDestroyInfoSize: DWORD; dwFlags: DWORD): HResult; stdcall;
    function ReturnBuffer (hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
    function GetPlayerContext (dpnid: TDPNID; var ppvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
    function GetGroupContext (dpnid: TDPNID; var ppvGroupContext: Pointer; dwFlags: DWORD): HResult; stdcall;
    function GetCaps (var pdpCaps: TDPN_Caps; dwFlags: DWORD): HResult; stdcall;
    function SetCaps (const pdpCaps: TDPN_Caps; dwFlags: DWORD): HResult; stdcall;
    function SetSPCaps (const pguidSP: TGUID; const pdpnSPCaps: TDPN_SP_Caps): HResult; stdcall;
    function GetSPCaps (const pguidSP: PGUID; var pdpnSPCaps: TDPN_SP_Caps; dwFlags: DWORD): HResult; stdcall;
    function GetConnectionInfo (dpnidEndPoint: TDPNID;
       var pdpConnectionInfo: TDPN_Connection_Info; dwFlags: DWORD): HResult; stdcall;
    function RegisterLobby (dpnHandle: TDPNHandle;
       pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
    function TerminateSession (pvTerminateData: Pointer; dwTerminateDataSize, dwFlags: DWORD): HResult; stdcall;
  end;

(***************************************************************************
 *
 * DirectPlay8 Interface IIDs
 *
 ****************************************************************************)

  IID_IDirectPlay8Peer                = IDirectPlay8Peer;
  IID_IDirectPlay8Server              = IDirectPlay8Server;
  IID_IDirectPlay8Client              = IDirectPlay8Client;

(****************************************************************************
 *
 * DirectPlay8 CLSIDs
 *
 ****************************************************************************)
const
  CLSID_DirectPlay8Client : TGUID = '{743F1DC6-5ABA-429f-8BDF-C54D03253DC2}';
  CLSID_DirectPlay8Peer   : TGUID = '{286F484D-375E-4458-A272-B138E2F80A6A}';
  CLSID_DirectPlay8Server : TGUID = '{DA825E1B-6830-43d7-835D-0B5AD82956A2}';

(****************************************************************************
 *
 * DirectPlay8 Service Provider GUIDs
 *
 ****************************************************************************)

  CLSID_DP8SP_IPX         : TGUID = '{53934290-628D-11D2-AE0F-006097B01411}';
  CLSID_DP8SP_MODEM       : TGUID = '{6D4A3650-628D-11D2-AE0F-006097B01411}';
  CLSID_DP8SP_SERIAL      : TGUID = '{743B5D60-628D-11D2-AE0F-006097B01411}';
  CLSID_DP8SP_TCPIP       : TGUID = '{EBFE7BA0-628D-11D2-AE0F-006097B01411}';

(****************************************************************************
 *
 * DirectPlay8 Functions
 *
 ****************************************************************************)

(*)
 * This function is no longer supported.  It is recommended that CoCreateInstance be used to create
 * DirectPlay8 lobby objects.
(*)
{$IFDEF DX8}
var
  DirectPlay8Create : function (const pcIID: TGUID; out ppvInterface;
    pUnknown: IUnknown): HResult; stdcall;
{$ENDIF}

(****************************************************************************
 *
 * DIRECTPLAY8 ERRORS
 *
 * Errors are represented by negative values and cannot be combined.
 *
 ****************************************************************************)

const
  _DPN_FACILITY_CODE	             = $015;
  _DPNHRESULT_BASE		     = $8000;
  MAKE_DPNHRESULT                    = (1 shl 31) or (_DPN_FACILITY_CODE shl 16) or _DPNHRESULT_BASE;

  DPN_OK			     = S_OK;

  DPNSUCCESS_EQUAL                   = (0 shl 31) or (_DPN_FACILITY_CODE shl 16) or _DPNHRESULT_BASE + $05;
  DPNSUCCESS_NOTEQUAL                = (0 shl 31) or (_DPN_FACILITY_CODE shl 16) or _DPNHRESULT_BASE + $0A;
  DPNSUCCESS_PENDING		     = (0 shl 31) or (_DPN_FACILITY_CODE shl 16) or _DPNHRESULT_BASE + $0E;

  DPNERR_ABORTED		     = MAKE_DPNHRESULT +  $30 ;
  DPNERR_ADDRESSING	      	     = MAKE_DPNHRESULT +  $40 ;
  DPNERR_ALREADYCLOSING		     = MAKE_DPNHRESULT +  $50 ;
  DPNERR_ALREADYCONNECTED	     = MAKE_DPNHRESULT +  $60 ;
  DPNERR_ALREADYDISCONNECTING	     = MAKE_DPNHRESULT +  $70 ;
  DPNERR_ALREADYINITIALIZED	     = MAKE_DPNHRESULT +  $80 ;
  DPNERR_ALREADYREGISTERED	     = MAKE_DPNHRESULT +  $90 ;
  DPNERR_BUFFERTOOSMALL		     = MAKE_DPNHRESULT + $100 ;
  DPNERR_CANNOTCANCEL		     = MAKE_DPNHRESULT + $110 ;
  DPNERR_CANTCREATEGROUP	     = MAKE_DPNHRESULT + $120 ;
  DPNERR_CANTCREATEPLAYER	     = MAKE_DPNHRESULT + $130 ;
  DPNERR_CANTLAUNCHAPPLICATION	     = MAKE_DPNHRESULT + $140 ;
  DPNERR_CONNECTING		     = MAKE_DPNHRESULT + $150 ;
  DPNERR_CONNECTIONLOST		     = MAKE_DPNHRESULT + $160 ;
  DPNERR_CONVERSION		     = MAKE_DPNHRESULT + $170 ;
  DPNERR_DATATOOLARGE		     = MAKE_DPNHRESULT + $175 ;
  DPNERR_DOESNOTEXIST		     = MAKE_DPNHRESULT + $180 ;
  DPNERR_DUPLICATECOMMAND	     = MAKE_DPNHRESULT + $190 ;
  DPNERR_ENDPOINTNOTRECEIVING	     = MAKE_DPNHRESULT + $200 ;
  DPNERR_ENUMQUERYTOOLARGE	     = MAKE_DPNHRESULT + $210 ;
  DPNERR_ENUMRESPONSETOOLARGE	     = MAKE_DPNHRESULT + $220 ;
  DPNERR_EXCEPTION		     = MAKE_DPNHRESULT + $230 ;
  DPNERR_GENERIC		     = E_FAIL;
  DPNERR_GROUPNOTEMPTY		     = MAKE_DPNHRESULT + $240 ;
  DPNERR_HOSTING                     = MAKE_DPNHRESULT + $250 ;
  DPNERR_HOSTREJECTEDCONNECTION	     = MAKE_DPNHRESULT + $260 ;
  DPNERR_HOSTTERMINATEDSESSION	     = MAKE_DPNHRESULT + $270 ;
  DPNERR_INCOMPLETEADDRESS	     = MAKE_DPNHRESULT + $280 ;
  DPNERR_INVALIDADDRESSFORMAT	     = MAKE_DPNHRESULT + $290 ;
  DPNERR_INVALIDAPPLICATION	     = MAKE_DPNHRESULT + $300 ;
  DPNERR_INVALIDCOMMAND		     = MAKE_DPNHRESULT + $310 ;
  DPNERR_INVALIDDEVICEADDRESS	     = MAKE_DPNHRESULT + $320 ;
  DPNERR_INVALIDENDPOINT	     = MAKE_DPNHRESULT + $330 ;
  DPNERR_INVALIDFLAGS		     = MAKE_DPNHRESULT + $340 ;
  DPNERR_INVALIDGROUP		     = MAKE_DPNHRESULT + $350 ;
  DPNERR_INVALIDHANDLE		     = MAKE_DPNHRESULT + $360 ;
  DPNERR_INVALIDHOSTADDRESS	     = MAKE_DPNHRESULT + $370 ;
  DPNERR_INVALIDINSTANCE	     = MAKE_DPNHRESULT + $380 ;
  DPNERR_INVALIDINTERFACE	     = MAKE_DPNHRESULT + $390 ;
  DPNERR_INVALIDOBJECT		     = MAKE_DPNHRESULT + $400 ;
  DPNERR_INVALIDPARAM	     	     = E_INVALIDARG;
  DPNERR_INVALIDPASSWORD     	     = MAKE_DPNHRESULT + $410 ;
  DPNERR_INV

⌨️ 快捷键说明

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