📄 directplay8.pas
字号:
(*)
[------------------------------------------------------------------------------
[ 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 + -