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

📄 directplay8.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*)
 [------------------------------------------------------------------------------
 [  DirectSound 8.1 Additions by Tim Baumgarten
 [  DirectSound 8.0 Delphi Adaptation by Ivo Steinmann
 [  DirectSound 7.0 Delphi Adaptation by Erik Unger
 [------------------------------------------------------------------------------
 [  Files    : dpaddr.h
 [             DPlay8.h
 [             dplobby8.h
 [             dvoice.h
 [  Modified : 13-Mar-2002
 [  E-Mail   : isteinmann@bluewin.ch
 [  Download : http://www.crazyentertainment.net
 [------------------------------------------------------------------------------
(*)

(*)
 [------------------------------------------------------------------------------
 [ History :
 [----------
 [ 13-Mar-2002 (Tim Baumgarten) : Little changes for DX8.1
 [------------------------------------------------------------------------------
(*)

unit DirectPlay8;

{$MINENUMSIZE 4}
{$ALIGN ON}

//Remove dot to revert to dx8
{.$DEFINE DX8}

interface

uses
  Windows,
  WinSock,
  DXCommon,
  DirectSound;

{$IFDEF DX8}
var
  DPlayDLL      : HMODULE = 0;
  DPlayDLLAddr  : HMODULE = 0;
  DPlayDLLLobby : HMODULE = 0;
  DPlayDLLVoice : HMODULE = 0;
{$ENDIF}

(****************************************************************************
 *
 * DirectPlay8 Datatypes (Non-Structure / Non-Message)
 *
 ****************************************************************************)

type
//
// Player IDs.  Used to uniquely identify a player in a session
//
  PDPNID = ^TDPNID;
  TDPNID = DWORD;

//
// Used as identifiers for operations
//

  PDPNHandle = ^TDPNHandle;
  TDPNHandle = DWORD;

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

type
  TDPNMessageHandler = function (pvUserContext: Pointer; dwMessageType: DWORD;
      pMessage: Pointer): HResult; stdcall;




(*==========================================================================;
 *
 *  Copyright (C) 2000 Microsoft Corporation.  All Rights Reserved.
 *
 *  File:       dpaddr.h
 *  Content:   DirectPlayAddress include file
 ***************************************************************************)


(****************************************************************************
 *
 * DirectPlay8Address Constants
 *
 ****************************************************************************)

const
  DPNA_DATATYPE_STRING				= $00000001;
  DPNA_DATATYPE_DWORD				= $00000002;
  DPNA_DATATYPE_GUID				= $00000003;
  DPNA_DATATYPE_BINARY				= $00000004;
  DPNA_DATATYPE_STRING_ANSI                     = $00000005;

  DPNA_DPNSVR_PORT				= 6073;

  DPNA_INDEX_INVALID				= $FFFFFFFF;

(****************************************************************************
 *
 * DirectPlay8Address Address Elements
 *
 ****************************************************************************)

//// UNICODE DEFINITIONS

  DPNA_SEPARATOR_KEYVALUE		        = '=';
  DPNA_SEPARATOR_USERDATA			= '#';
  DPNA_SEPARATOR_COMPONENT			= ';';
  DPNA_ESCAPECHAR				= '%';

// Header
  DPNA_HEADER		                        = 'x-directplay:/';

// key names for address components
  DPNA_KEY_APPLICATION_INSTANCE		        = 'applicationinstance';
  DPNA_KEY_BAUD					= 'baud';
  DPNA_KEY_DEVICE				= 'device';
  DPNA_KEY_FLOWCONTROL				= 'flowcontrol';
  DPNA_KEY_HOSTNAME				= 'hostname';
  DPNA_KEY_PARITY				= 'parity';
  DPNA_KEY_PHONENUMBER				= 'phonenumber';
  DPNA_KEY_PORT					= 'port';
  DPNA_KEY_PROGRAM				= 'program';
  DPNA_KEY_PROVIDER				= 'provider';
  DPNA_KEY_STOPBITS				= 'stopbits';

// values for baud rate
  DPNA_BAUD_RATE_9600				= 9600;
  DPNA_BAUD_RATE_14400				= 14400;
  DPNA_BAUD_RATE_19200				= 19200;
  DPNA_BAUD_RATE_38400				= 38400;
  DPNA_BAUD_RATE_56000				= 56000;
  DPNA_BAUD_RATE_57600				= 57600;
  DPNA_BAUD_RATE_115200				= 115200;

// values for stop bits
  DPNA_STOP_BITS_ONE				= '1';
  DPNA_STOP_BITS_ONE_FIVE			= '1.5';
  DPNA_STOP_BITS_TWO				= '2';

// values for parity
  DPNA_PARITY_NONE				= 'NONE';
  DPNA_PARITY_EVEN				= 'EVEN';
  DPNA_PARITY_ODD				= 'ODD';
  DPNA_PARITY_MARK				= 'MARK';
  DPNA_PARITY_SPACE				= 'SPACE';

// values for flow control
  DPNA_FLOW_CONTROL_NONE			= 'NONE';
  DPNA_FLOW_CONTROL_XONXOFF			= 'XONXOFF';
  DPNA_FLOW_CONTROL_RTS				= 'RTS';
  DPNA_FLOW_CONTROL_DTR				= 'DTR';
  DPNA_FLOW_CONTROL_RTSDTR			= 'RTSDTR';

// Shortcut values
//
// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
//
  DPNA_VALUE_TCPIPPROVIDER                      = 'IP';
  DPNA_VALUE_IPXPROVIDER                        = 'IPX';
  DPNA_VALUE_MODEMPROVIDER                      = 'MODEM';
  DPNA_VALUE_SERIALPROVIDER                     = 'SERIAL';


//// ANSI DEFINITIONS

// Header
  DPNA_HEADER_A					= 'x-directplay:/';
  DPNA_SEPARATOR_KEYVALUE_A			= '=';
  DPNA_SEPARATOR_USERDATA_A			= '#';
  DPNA_SEPARATOR_COMPONENT_A			= ';';
  DPNA_ESCAPECHAR_A			        = '%';

// key names for address components
  DPNA_KEY_APPLICATION_INSTANCE_A		= 'applicationinstance';
  DPNA_KEY_BAUD_A				= 'baud';
  DPNA_KEY_DEVICE_A				= 'device';
  DPNA_KEY_FLOWCONTROL_A			= 'flowcontrol';
  DPNA_KEY_HOSTNAME_A				= 'hostname';
  DPNA_KEY_PARITY_A				= 'parity';
  DPNA_KEY_PHONENUMBER_A			= 'phonenumber';
  DPNA_KEY_PORT_A				= 'port';
  DPNA_KEY_PROGRAM_A				= 'program';
  DPNA_KEY_PROVIDER_A				= 'provider';
  DPNA_KEY_STOPBITS_A				= 'stopbits';

// values for stop bits
  DPNA_STOP_BITS_ONE_A				= '1';
  DPNA_STOP_BITS_ONE_FIVE_A			= '1.5';
  DPNA_STOP_BITS_TWO_A				= '2';

// values for parity
  DPNA_PARITY_NONE_A				= 'NONE';
  DPNA_PARITY_EVEN_A				= 'EVEN';
  DPNA_PARITY_ODD_A				= 'ODD';
  DPNA_PARITY_MARK_A				= 'MARK';
  DPNA_PARITY_SPACE_A				= 'SPACE';

// values for flow control
  DPNA_FLOW_CONTROL_NONE_A			= 'NONE';
  DPNA_FLOW_CONTROL_XONXOFF_A 		        = 'XONXOFF';
  DPNA_FLOW_CONTROL_RTS_A			= 'RTS';
  DPNA_FLOW_CONTROL_DTR_A			= 'DTR';
  DPNA_FLOW_CONTROL_RTSDTR_A			= 'RTSDTR';

// Shortcut values
//
// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
//
  DPNA_VALUE_TCPIPPROVIDER_A                    = 'IP';
  DPNA_VALUE_IPXPROVIDER_A                      = 'IPX';
  DPNA_VALUE_MODEMPROVIDER_A                    = 'MODEM';
  DPNA_VALUE_SERIALPROVIDER_A                   = 'SERIAL';

(****************************************************************************
 *
 * DirectPlay8Address Forward Declarations For External Types
 *
 ****************************************************************************)
type
  IDirectPlay8Address   = interface;
  IDirectPlay8AddressIP = interface;

(****************************************************************************
 *
 * DirectPlay8Address Interface Pointer definitions
 *
 ****************************************************************************)

//
// COM definition for IDirectPlay8Address Generic Interface
//
  PIDirectPlay8Addresses = ^TIDirectPlay8Addresses;
  TIDirectPlay8Addresses = array[0..0] of IDirectPlay8Address;

  IDirectPlay8Address = interface (IUnknown)
    ['{83783300-4063-4c8a-9DB3-82830A7FEB31}']
    function BuildFromURLW (pwszSourceURL : PWChar): HResult; stdcall;
    function BuildFromURLA (pszSourceURL : PChar): HResult; stdcall;
    function Duplicate (out ppdpaNewAddress : IDirectPlay8Address): HResult; stdcall;
    function SetEqual (pdpaAddress: IDirectPlay8Address): HResult; stdcall;
    function IsEqual (pdpaAddress: IDirectPlay8Address): HResult; stdcall;
    function Clear : HResult; stdcall;
    function GetURLW (pwszURL: PWChar; var pdwNumChars: DWORD): HResult; stdcall;
    function GetURLA (pszURL: PChar; var pdwNumChars: DWORD): HResult; stdcall;
    function GetSP (var pguidSP: TGUID): HResult; stdcall;
    function GetUserData (pvUserData: Pointer; var pdwBufferSize: DWORD): HResult; stdcall;
    function SetSP (const pguidSP: PGUID): HResult; stdcall;
    function SetUserData (pvUserData: Pointer; dwDataSize: DWORD): HResult; stdcall;
    function GetNumComponents (var pdwNumComponents: DWORD): HResult; stdcall;
    function GetComponentByName (pwszName: PWChar; pvBuffer: Pointer;
        var pdwBufferSize, pdwDataType: DWORD): HResult; stdcall;
    function GetComponentByIndex (dwComponentID: DWORD; pwszName: PWChar; var pdwNameLen: DWORD;
        pvBuffer: Pointer; var pdwBufferSize, pdwDataType: DWORD): HResult; stdcall;
    function AddComponent (pwszName: PWChar; lpvData: Pointer; dwDataSize: DWORD;
        dwDataType: DWORD): HResult; stdcall;
    function GetDevice (var pguidDevice: TGUID): HResult; stdcall;
    function SetDevice (var pguidDevice: TGUID): HResult; stdcall;
    function BuildFromDPADDRESS (pvAddress: Pointer; dwDataSize: DWORD): HResult; stdcall;
  end;

//
// COM definition for IDirectPlay8AddressIP Generic Interface
//
  IDirectPlay8AddressIP = interface (IUnknown)
    ['{E5A0E990-2BAD-430b-87DA-A142CF75DE58}']
    function BuildFromSockAddr (const pSockAddr: TSockAddr): HResult; stdcall;
    function BuildAddress (wszAddress: PWChar; usPort: Word): HResult; stdcall;
    function BuildLocalAddress (const pguidAdapter: TGUID; usPort: Word): HResult; stdcall;
    function GetSockAddress (psockAddress: PSockAddr; var pdwAddressBufferSize: DWORD): HResult; stdcall;
    function GetLocalAddress (var pguidAdapter: TGUID; var pusPort: Word): HResult; stdcall;
    function GetAddress (wszAddress: PWChar; var pdwAddressLength: DWORD; var psPort: Word): HResult; stdcall;
  end;

(****************************************************************************
 *
 * DirectPlay8Address Interface IIDs
 *
 ****************************************************************************)

  IID_IDirectPlay8Address     = IDirectPlay8Address;
  IID_IDirectPlay8AddressIP   = IDirectPlay8AddressIP;

(****************************************************************************
 *
 * DirectPlay8Address CLSIDs
 *
 ****************************************************************************)

const
  CLSID_DirectPlay8Address : TGUID = '{934A9523-A3CA-4bc5-ADA0-D6D95D979421}';

(****************************************************************************
 *
 * DirectPlay8Address Functions
 *
 ****************************************************************************)

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

⌨️ 快捷键说明

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