3454 lines
143 KiB
ObjectPascal
3454 lines
143 KiB
ObjectPascal
{******************************************************************************}
|
|
{* *}
|
|
{* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
|
|
{* *}
|
|
{* Files: dpaddr.h dplobby8.h dplay8.h dvoice.h *}
|
|
{* Content: DirectPlay8 include files *}
|
|
{* *}
|
|
{* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *}
|
|
{* E-Mail: directx@clootie.ru *}
|
|
{* *}
|
|
{* Modified: 22-Aug-2004 *}
|
|
{* *}
|
|
{* Latest version can be downloaded from: *}
|
|
{* http://clootie.ru *}
|
|
{* http://sourceforge.net/projects/delphi-dx9sdk *}
|
|
{* *}
|
|
{******************************************************************************}
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{******************************************************************************}
|
|
|
|
{$I DirectX.inc}
|
|
|
|
unit DirectPlay8;
|
|
|
|
interface
|
|
|
|
(*$HPPEMIT '#include "dplay8.h"' *)
|
|
(*$HPPEMIT '#include "dplobby8.h"' *)
|
|
(*$HPPEMIT '#include "dvoice.h"' *)
|
|
|
|
uses
|
|
Windows, WinSock, DirectSound;
|
|
|
|
(*==========================================================================;
|
|
*
|
|
* Copyright (C) 2000-2002 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: dpaddr.h
|
|
* Content: DirectPlayAddress include file
|
|
***************************************************************************)
|
|
|
|
|
|
const
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address CLSIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {934A9523-A3CA-4bc5-ADA0-D6D95D979421}
|
|
CLSID_DirectPlay8Address: TGUID = '{934a9523-a3ca-4bc5-ada0-d6d95d979421}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8Address}
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Interface IIDs
|
|
*
|
|
****************************************************************************)
|
|
type
|
|
DPNAREFIID = TGUID;
|
|
{$EXTERNALSYM DPNAREFIID}
|
|
TDPNARefIID = DPNAREFIID;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Constants
|
|
*
|
|
****************************************************************************)
|
|
const
|
|
//
|
|
// Asynchronous operation flags
|
|
//
|
|
DPNA_DATATYPE_STRING = $00000001;
|
|
{$EXTERNALSYM DPNA_DATATYPE_STRING}
|
|
DPNA_DATATYPE_DWORD = $00000002;
|
|
{$EXTERNALSYM DPNA_DATATYPE_DWORD}
|
|
DPNA_DATATYPE_GUID = $00000003;
|
|
{$EXTERNALSYM DPNA_DATATYPE_GUID}
|
|
DPNA_DATATYPE_BINARY = $00000004;
|
|
{$EXTERNALSYM DPNA_DATATYPE_BINARY}
|
|
DPNA_DATATYPE_STRING_ANSI = $00000005;
|
|
{$EXTERNALSYM DPNA_DATATYPE_STRING_ANSI}
|
|
|
|
DPNA_DPNSVR_PORT = 6073;
|
|
{$EXTERNALSYM DPNA_DPNSVR_PORT}
|
|
|
|
DPNA_INDEX_INVALID = $FFFFFFFF;
|
|
{$EXTERNALSYM DPNA_INDEX_INVALID}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Address Elements
|
|
*
|
|
****************************************************************************)
|
|
|
|
DPNA_SEPARATOR_KEYVALUE = WideChar('=');
|
|
{$EXTERNALSYM DPNA_SEPARATOR_KEYVALUE}
|
|
DPNA_SEPARATOR_USERDATA = WideChar('#');
|
|
{$EXTERNALSYM DPNA_SEPARATOR_USERDATA}
|
|
DPNA_SEPARATOR_COMPONENT = WideChar(';');
|
|
{$EXTERNALSYM DPNA_SEPARATOR_COMPONENT}
|
|
DPNA_ESCAPECHAR = WideChar('%');
|
|
{$EXTERNALSYM DPNA_ESCAPECHAR}
|
|
|
|
// Header
|
|
DPNA_HEADER = 'x-directplay:/';
|
|
{$EXTERNALSYM DPNA_HEADER}
|
|
|
|
// key names for address components
|
|
DPNA_KEY_NAT_RESOLVER = 'natresolver';
|
|
{$EXTERNALSYM DPNA_KEY_NAT_RESOLVER}
|
|
DPNA_KEY_NAT_RESOLVER_USER_STRING = 'natresolveruserstring';
|
|
{$EXTERNALSYM DPNA_KEY_NAT_RESOLVER_USER_STRING}
|
|
DPNA_KEY_APPLICATION_INSTANCE = 'applicationinstance';
|
|
{$EXTERNALSYM DPNA_KEY_APPLICATION_INSTANCE}
|
|
DPNA_KEY_DEVICE = 'device';
|
|
{$EXTERNALSYM DPNA_KEY_DEVICE}
|
|
DPNA_KEY_HOSTNAME = 'hostname';
|
|
{$EXTERNALSYM DPNA_KEY_HOSTNAME}
|
|
DPNA_KEY_PORT = 'port';
|
|
{$EXTERNALSYM DPNA_KEY_PORT}
|
|
DPNA_KEY_NAMEINFO = 'nameinfo';
|
|
{$EXTERNALSYM DPNA_KEY_NAMEINFO}
|
|
DPNA_KEY_PROCESSOR = 'processor';
|
|
{$EXTERNALSYM DPNA_KEY_PROCESSOR}
|
|
DPNA_KEY_PROGRAM = 'program';
|
|
{$EXTERNALSYM DPNA_KEY_PROGRAM}
|
|
DPNA_KEY_PROVIDER = 'provider';
|
|
{$EXTERNALSYM DPNA_KEY_PROVIDER}
|
|
DPNA_KEY_SCOPE = 'scope';
|
|
{$EXTERNALSYM DPNA_KEY_SCOPE}
|
|
DPNA_KEY_TRAVERSALMODE = 'traversalmode';
|
|
{$EXTERNALSYM DPNA_KEY_TRAVERSALMODE}
|
|
DPNA_KEY_BAUD = 'baud';
|
|
{$EXTERNALSYM DPNA_KEY_BAUD}
|
|
DPNA_KEY_FLOWCONTROL = 'flowcontrol';
|
|
{$EXTERNALSYM DPNA_KEY_FLOWCONTROL}
|
|
DPNA_KEY_PARITY = 'parity';
|
|
{$EXTERNALSYM DPNA_KEY_PARITY}
|
|
DPNA_KEY_PHONENUMBER = 'phonenumber';
|
|
{$EXTERNALSYM DPNA_KEY_PHONENUMBER}
|
|
DPNA_KEY_STOPBITS = 'stopbits';
|
|
{$EXTERNALSYM DPNA_KEY_STOPBITS}
|
|
|
|
// values for baud rate
|
|
DPNA_BAUD_RATE_9600 = 9600;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_9600}
|
|
DPNA_BAUD_RATE_14400 = 14400;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_14400}
|
|
DPNA_BAUD_RATE_19200 = 19200;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_19200}
|
|
DPNA_BAUD_RATE_38400 = 38400;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_38400}
|
|
DPNA_BAUD_RATE_56000 = 56000;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_56000}
|
|
DPNA_BAUD_RATE_57600 = 57600;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_57600}
|
|
DPNA_BAUD_RATE_115200 = 115200;
|
|
{$EXTERNALSYM DPNA_BAUD_RATE_115200}
|
|
|
|
// values for stop bits
|
|
DPNA_STOP_BITS_ONE = '1';
|
|
{$EXTERNALSYM DPNA_STOP_BITS_ONE}
|
|
DPNA_STOP_BITS_ONE_FIVE = '1.5';
|
|
{$EXTERNALSYM DPNA_STOP_BITS_ONE_FIVE}
|
|
DPNA_STOP_BITS_TWO = '2';
|
|
{$EXTERNALSYM DPNA_STOP_BITS_TWO}
|
|
|
|
// values for parity
|
|
DPNA_PARITY_NONE = 'NONE';
|
|
{$EXTERNALSYM DPNA_PARITY_NONE}
|
|
DPNA_PARITY_EVEN = 'EVEN';
|
|
{$EXTERNALSYM DPNA_PARITY_EVEN}
|
|
DPNA_PARITY_ODD = 'ODD';
|
|
{$EXTERNALSYM DPNA_PARITY_ODD}
|
|
DPNA_PARITY_MARK = 'MARK';
|
|
{$EXTERNALSYM DPNA_PARITY_MARK}
|
|
DPNA_PARITY_SPACE = 'SPACE';
|
|
{$EXTERNALSYM DPNA_PARITY_SPACE}
|
|
|
|
// values for flow control
|
|
DPNA_FLOW_CONTROL_NONE = 'NONE';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_NONE}
|
|
DPNA_FLOW_CONTROL_XONXOFF = 'XONXOFF';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_XONXOFF}
|
|
DPNA_FLOW_CONTROL_RTS = 'RTS';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_RTS}
|
|
DPNA_FLOW_CONTROL_DTR = 'DTR';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_DTR}
|
|
DPNA_FLOW_CONTROL_RTSDTR = 'RTSDTR';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_RTSDTR}
|
|
// values for traversal mode
|
|
DPNA_TRAVERSALMODE_NONE = 0;
|
|
{$EXTERNALSYM DPNA_TRAVERSALMODE_NONE}
|
|
DPNA_TRAVERSALMODE_PORTREQUIRED = 1;
|
|
{$EXTERNALSYM DPNA_TRAVERSALMODE_PORTREQUIRED}
|
|
DPNA_TRAVERSALMODE_PORTRECOMMENDED = 2;
|
|
{$EXTERNALSYM DPNA_TRAVERSALMODE_PORTRECOMMENDED}
|
|
// Shortcut values
|
|
//
|
|
// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
|
|
//
|
|
DPNA_VALUE_TCPIPPROVIDER = 'IP';
|
|
{$EXTERNALSYM DPNA_VALUE_TCPIPPROVIDER}
|
|
DPNA_VALUE_IPXPROVIDER = 'IPX';
|
|
{$EXTERNALSYM DPNA_VALUE_IPXPROVIDER}
|
|
DPNA_VALUE_MODEMPROVIDER = 'MODEM';
|
|
{$EXTERNALSYM DPNA_VALUE_MODEMPROVIDER}
|
|
DPNA_VALUE_SERIALPROVIDER = 'SERIAL';
|
|
{$EXTERNALSYM DPNA_VALUE_SERIALPROVIDER}
|
|
|
|
//// ANSI DEFINITIONS
|
|
|
|
// Header
|
|
DPNA_HEADER_A = 'x-directplay:/';
|
|
{$EXTERNALSYM DPNA_HEADER_A}
|
|
DPNA_SEPARATOR_KEYVALUE_A = '=';
|
|
{$EXTERNALSYM DPNA_SEPARATOR_KEYVALUE_A}
|
|
DPNA_SEPARATOR_USERDATA_A = '#';
|
|
{$EXTERNALSYM DPNA_SEPARATOR_USERDATA_A}
|
|
DPNA_SEPARATOR_COMPONENT_A = ';';
|
|
{$EXTERNALSYM DPNA_SEPARATOR_COMPONENT_A}
|
|
DPNA_ESCAPECHAR_A = '%';
|
|
{$EXTERNALSYM DPNA_ESCAPECHAR_A}
|
|
|
|
// key names for address components
|
|
DPNA_KEY_NAT_RESOLVER_A = 'natresolver';
|
|
{$EXTERNALSYM DPNA_KEY_NAT_RESOLVER_A}
|
|
DPNA_KEY_NAT_RESOLVER_USER_STRING_A = 'natresolveruserstring';
|
|
{$EXTERNALSYM DPNA_KEY_NAT_RESOLVER_USER_STRING_A}
|
|
DPNA_KEY_APPLICATION_INSTANCE_A = 'applicationinstance';
|
|
{$EXTERNALSYM DPNA_KEY_APPLICATION_INSTANCE_A}
|
|
DPNA_KEY_DEVICE_A = 'device';
|
|
{$EXTERNALSYM DPNA_KEY_DEVICE_A}
|
|
DPNA_KEY_HOSTNAME_A = 'hostname';
|
|
{$EXTERNALSYM DPNA_KEY_HOSTNAME_A}
|
|
DPNA_KEY_PORT_A = 'port';
|
|
{$EXTERNALSYM DPNA_KEY_PORT_A}
|
|
DPNA_KEY_NAMEINFO_A = 'nameinfo';
|
|
{$EXTERNALSYM DPNA_KEY_NAMEINFO_A}
|
|
DPNA_KEY_PROCESSOR_A = 'processor';
|
|
{$EXTERNALSYM DPNA_KEY_PROCESSOR_A}
|
|
DPNA_KEY_PROGRAM_A = 'program';
|
|
{$EXTERNALSYM DPNA_KEY_PROGRAM_A}
|
|
DPNA_KEY_PROVIDER_A = 'provider';
|
|
{$EXTERNALSYM DPNA_KEY_PROVIDER_A}
|
|
DPNA_KEY_SCOPE_A = 'scope';
|
|
{$EXTERNALSYM DPNA_KEY_SCOPE_A}
|
|
DPNA_KEY_TRAVERSALMODE_A = 'traversalmode';
|
|
{$EXTERNALSYM DPNA_KEY_TRAVERSALMODE_A}
|
|
DPNA_KEY_BAUD_A = 'baud';
|
|
{$EXTERNALSYM DPNA_KEY_BAUD_A}
|
|
DPNA_KEY_FLOWCONTROL_A = 'flowcontrol';
|
|
{$EXTERNALSYM DPNA_KEY_FLOWCONTROL_A}
|
|
DPNA_KEY_PARITY_A = 'parity';
|
|
{$EXTERNALSYM DPNA_KEY_PARITY_A}
|
|
DPNA_KEY_PHONENUMBER_A = 'phonenumber';
|
|
{$EXTERNALSYM DPNA_KEY_PHONENUMBER_A}
|
|
DPNA_KEY_STOPBITS_A = 'stopbits';
|
|
{$EXTERNALSYM DPNA_KEY_STOPBITS_A}
|
|
|
|
// values for stop bits
|
|
DPNA_STOP_BITS_ONE_A = '1';
|
|
{$EXTERNALSYM DPNA_STOP_BITS_ONE_A}
|
|
DPNA_STOP_BITS_ONE_FIVE_A = '1.5';
|
|
{$EXTERNALSYM DPNA_STOP_BITS_ONE_FIVE_A}
|
|
DPNA_STOP_BITS_TWO_A = '2';
|
|
{$EXTERNALSYM DPNA_STOP_BITS_TWO_A}
|
|
|
|
// values for parity
|
|
DPNA_PARITY_NONE_A = 'NONE';
|
|
{$EXTERNALSYM DPNA_PARITY_NONE_A}
|
|
DPNA_PARITY_EVEN_A = 'EVEN';
|
|
{$EXTERNALSYM DPNA_PARITY_EVEN_A}
|
|
DPNA_PARITY_ODD_A = 'ODD';
|
|
{$EXTERNALSYM DPNA_PARITY_ODD_A}
|
|
DPNA_PARITY_MARK_A = 'MARK';
|
|
{$EXTERNALSYM DPNA_PARITY_MARK_A}
|
|
DPNA_PARITY_SPACE_A = 'SPACE';
|
|
{$EXTERNALSYM DPNA_PARITY_SPACE_A}
|
|
|
|
// values for flow control
|
|
DPNA_FLOW_CONTROL_NONE_A = 'NONE';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_NONE_A}
|
|
DPNA_FLOW_CONTROL_XONXOFF_A = 'XONXOFF';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_XONXOFF_A}
|
|
DPNA_FLOW_CONTROL_RTS_A = 'RTS';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_RTS_A}
|
|
DPNA_FLOW_CONTROL_DTR_A = 'DTR';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_DTR_A}
|
|
DPNA_FLOW_CONTROL_RTSDTR_A = 'RTSDTR';
|
|
{$EXTERNALSYM DPNA_FLOW_CONTROL_RTSDTR_A}
|
|
// Shortcut values
|
|
//
|
|
// These can be used instead of the corresponding CLSID_DP8SP_XXXX guids
|
|
//
|
|
DPNA_VALUE_TCPIPPROVIDER_A = 'IP';
|
|
{$EXTERNALSYM DPNA_VALUE_TCPIPPROVIDER_A}
|
|
DPNA_VALUE_IPXPROVIDER_A = 'IPX';
|
|
{$EXTERNALSYM DPNA_VALUE_IPXPROVIDER_A}
|
|
DPNA_VALUE_MODEMPROVIDER_A = 'MODEM';
|
|
{$EXTERNALSYM DPNA_VALUE_MODEMPROVIDER_A}
|
|
DPNA_VALUE_SERIALPROVIDER_A = 'SERIAL';
|
|
{$EXTERNALSYM DPNA_VALUE_SERIALPROVIDER_A}
|
|
|
|
type
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Forward Declarations For External Types
|
|
*
|
|
****************************************************************************)
|
|
|
|
SOCKADDR = TSockAddr;
|
|
{$EXTERNALSYM SOCKADDR}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Functions
|
|
*
|
|
****************************************************************************)
|
|
|
|
|
|
(*
|
|
*
|
|
* This function is no longer supported. It is recommended that CoCreateInstance be used to create
|
|
* DirectPlay8 address objects.
|
|
*
|
|
* HRESULT WINAPI DirectPlay8AddressCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
|
|
*
|
|
*)
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Application Interfaces
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// COM definition for IDirectPlay8Address Generic Interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Address);'}
|
|
{$EXTERNALSYM IDirectPlay8Address}
|
|
IDirectPlay8Address = interface(IUnknown)
|
|
['{83783300-4063-4c8a-9db3-82830a7feb31}']
|
|
(*** IDirectPlay8Address methods ***)
|
|
function BuildFromURLW(pwszSourceURL: PWideChar): HResult; stdcall;
|
|
function BuildFromURLA(pszSourceURL: PAnsiChar): 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: PWideChar; var pdwNumChars: DWORD): HResult; stdcall;
|
|
function GetURLA(pszURL: PAnsiChar; var pdwNumChars: DWORD): HResult; stdcall;
|
|
function GetSP(out pguidSP: TGUID): HResult; stdcall;
|
|
function GetUserData(pvUserData: Pointer; var pdwBufferSize: DWORD): HResult; stdcall;
|
|
function SetSP(const pguidSP: TGUID): HResult; stdcall;
|
|
function SetUserData(pvUserData: Pointer; dwDataSize: DWORD): HResult; stdcall;
|
|
function GetNumComponents(out pdwNumComponents: DWORD): HResult; stdcall;
|
|
function GetComponentByName(pwszName: PWideChar; pvBuffer: Pointer; var pdwBufferSize: DWORD; out pdwDataType: DWORD): HResult; stdcall;
|
|
function GetComponentByIndex(dwComponentID: DWORD; pwszName: PWideChar; var pdwNameLen: DWORD; pvBuffer: Pointer; var pdwBufferSize: DWORD; out pdwDataType: DWORD): HResult; stdcall;
|
|
function AddComponent(pwszName: PWideChar; lpvData: Pointer; dwDataSize, dwDataType: DWORD): HResult; stdcall;
|
|
function GetDevice(out pguidDevice: TGUID): HResult; stdcall;
|
|
function SetDevice(const pguidDevice: TGUID): HResult; stdcall;
|
|
function BuildFromDPADDRESS(pvAddress: Pointer; dwDataSize: DWORD): HResult; stdcall;
|
|
end;
|
|
{$NODEFINE PIDirectPlay8Address}
|
|
{$HPPEMIT 'typedef _di_IDirectPlay8Address *PIDirectPlay8Address;'}
|
|
PIDirectPlay8Address = ^IDirectPlay8Address;
|
|
|
|
//
|
|
// COM definition for IDirectPlay8AddressIP Generic Interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8AddressIP);'}
|
|
{$EXTERNALSYM IDirectPlay8AddressIP}
|
|
IDirectPlay8AddressIP = interface(IUnknown)
|
|
['{e5a0e990-2bad-430b-87da-a142cf75de58}']
|
|
(*** IDirectPlay8AddressIP methods ***)
|
|
// Constructs a IDirectPlay8 TCP Address from a SOCKADDR structure
|
|
function BuildFromSockAddr(const pSockAddr: TSockAddr): HResult; stdcall;
|
|
|
|
// Constructs a TCP Address from a string (hostname) and port
|
|
function BuildAddress(wszAddress: PWideChar; usPort: Word): HResult; stdcall;
|
|
|
|
// Builds a local TCP Address
|
|
function BuildLocalAddress(const pguidAdapter: TGUID; usPort: Word): HResult; stdcall;
|
|
|
|
// Gets the address from the structure in SOCKADR format
|
|
function GetSockAddress(psockAddress: PSockAddr; var pdwAddressBufferSize: DWORD): HResult; stdcall;
|
|
|
|
// Gets the local afddress
|
|
function GetLocalAddress(out pguidAdapter: TGUID; out pusPort: Word): HResult; stdcall;
|
|
|
|
// Gets the remote address
|
|
function GetAddress(wszAddress: PWideChar; var pdwAddressLength: DWORD; out psPort: Word): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Address Interface IIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
type
|
|
// {83783300-4063-4c8a-9DB3-82830A7FEB31}
|
|
IID_IDirectPlay8Address = IDirectPlay8Address;
|
|
{$EXTERNALSYM IID_IDirectPlay8Address}
|
|
// {E5A0E990-2BAD-430b-87DA-A142CF75DE58}
|
|
IID_IDirectPlay8AddressIP = IDirectPlay8AddressIP;
|
|
{$EXTERNALSYM IID_IDirectPlay8AddressIP}
|
|
|
|
|
|
|
|
(*==========================================================================;
|
|
*
|
|
* Copyright (C) 1998-2002 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: DPlay8.h
|
|
* Content: DirectPlay8 include file
|
|
*
|
|
***************************************************************************)
|
|
|
|
const
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 CLSIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {743F1DC6-5ABA-429f-8BDF-C54D03253DC2}
|
|
CLSID_DirectPlay8Client: TGUID = '{743f1dc6-5aba-429f-8bdf-c54d03253dc2}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8Client}
|
|
|
|
// {DA825E1B-6830-43d7-835D-0B5AD82956A2}
|
|
CLSID_DirectPlay8Server: TGUID = '{da825e1b-6830-43d7-835d-0b5ad82956a2}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8Server}
|
|
|
|
// {286F484D-375E-4458-A272-B138E2F80A6A}
|
|
CLSID_DirectPlay8Peer: TGUID = '{286f484d-375e-4458-a272-b138e2f80a6a}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8Peer}
|
|
|
|
// CLSIDs added for DirectX 9
|
|
|
|
// {FC47060E-6153-4b34-B975-8E4121EB7F3C}
|
|
CLSID_DirectPlay8ThreadPool: TGUID = '{fc47060e-6153-4b34-b975-8e4121eb7f3c}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8ThreadPool}
|
|
|
|
// {E4C1D9A2-CBF7-48bd-9A69-34A55E0D8941}
|
|
CLSID_DirectPlay8NATResolver: TGUID = '{e4c1d9a2-cbf7-48bd-9a69-34a55e0d8941}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8NATResolver}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Service Provider GUIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {53934290-628D-11D2-AE0F-006097B01411}
|
|
CLSID_DP8SP_IPX: TGUID = '{53934290-628d-11d2-ae0f-006097b01411}';
|
|
{$EXTERNALSYM CLSID_DP8SP_IPX}
|
|
|
|
// {6D4A3650-628D-11D2-AE0F-006097B01411}
|
|
CLSID_DP8SP_MODEM: TGUID = '{6d4a3650-628d-11d2-ae0f-006097b01411}';
|
|
{$EXTERNALSYM CLSID_DP8SP_MODEM}
|
|
|
|
// {743B5D60-628D-11D2-AE0F-006097B01411}
|
|
CLSID_DP8SP_SERIAL: TGUID = '{743b5d60-628d-11d2-ae0f-006097b01411}';
|
|
{$EXTERNALSYM CLSID_DP8SP_SERIAL}
|
|
|
|
// {EBFE7BA0-628D-11D2-AE0F-006097B01411}
|
|
CLSID_DP8SP_TCPIP: TGUID = '{ebfe7ba0-628d-11d2-ae0f-006097b01411}';
|
|
{$EXTERNALSYM CLSID_DP8SP_TCPIP}
|
|
|
|
|
|
// Service providers added for DirectX 9
|
|
|
|
|
|
// {995513AF-3027-4b9a-956E-C772B3F78006}
|
|
CLSID_DP8SP_BLUETOOTH: TGUID = '{995513af-3027-4b9a-956e-c772b3f78006}';
|
|
{$EXTERNALSYM CLSID_DP8SP_BLUETOOTH}
|
|
|
|
|
|
type
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Callback Functions
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Callback Function Type Definition
|
|
//
|
|
TFNDPNMessageHandler = function (pvUserContext: Pointer; dwMessageType: DWORD; pMessage: Pointer): HRESULT; stdcall;
|
|
{$NODEFINE TFNDPNMessageHandler}
|
|
{$HPPEMIT 'typedef PFNDPNMESSAGEHANDLER TFNDPNMessageHandler;'}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Datatypes (Non-Structure / Non-Message)
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Player IDs. Used to uniquely identify a player in a session
|
|
//
|
|
PDPNID = ^DPNID;
|
|
{$EXTERNALSYM PDPNID}
|
|
DPNID = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWORD;
|
|
{$EXTERNALSYM DPNID}
|
|
TDPNID = DPNID;
|
|
|
|
//
|
|
// Used as identifiers for operations
|
|
//
|
|
PDPNHandle = ^TDPNHandle;
|
|
DPNHANDLE = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWORD;
|
|
{$EXTERNALSYM DPNHANDLE}
|
|
TDPNHandle = DPNHANDLE;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Message Identifiers
|
|
*
|
|
****************************************************************************)
|
|
|
|
const
|
|
DPN_MSGID_OFFSET = $FFFF0000;
|
|
{$EXTERNALSYM DPN_MSGID_OFFSET}
|
|
DPN_MSGID_ADD_PLAYER_TO_GROUP = (DPN_MSGID_OFFSET or $0001);
|
|
{$EXTERNALSYM DPN_MSGID_ADD_PLAYER_TO_GROUP}
|
|
DPN_MSGID_APPLICATION_DESC = (DPN_MSGID_OFFSET or $0002);
|
|
{$EXTERNALSYM DPN_MSGID_APPLICATION_DESC}
|
|
DPN_MSGID_ASYNC_OP_COMPLETE = (DPN_MSGID_OFFSET or $0003);
|
|
{$EXTERNALSYM DPN_MSGID_ASYNC_OP_COMPLETE}
|
|
DPN_MSGID_CLIENT_INFO = (DPN_MSGID_OFFSET or $0004);
|
|
{$EXTERNALSYM DPN_MSGID_CLIENT_INFO}
|
|
DPN_MSGID_CONNECT_COMPLETE = (DPN_MSGID_OFFSET or $0005);
|
|
{$EXTERNALSYM DPN_MSGID_CONNECT_COMPLETE}
|
|
DPN_MSGID_CREATE_GROUP = (DPN_MSGID_OFFSET or $0006);
|
|
{$EXTERNALSYM DPN_MSGID_CREATE_GROUP}
|
|
DPN_MSGID_CREATE_PLAYER = (DPN_MSGID_OFFSET or $0007);
|
|
{$EXTERNALSYM DPN_MSGID_CREATE_PLAYER}
|
|
DPN_MSGID_DESTROY_GROUP = (DPN_MSGID_OFFSET or $0008);
|
|
{$EXTERNALSYM DPN_MSGID_DESTROY_GROUP}
|
|
DPN_MSGID_DESTROY_PLAYER = (DPN_MSGID_OFFSET or $0009);
|
|
{$EXTERNALSYM DPN_MSGID_DESTROY_PLAYER}
|
|
DPN_MSGID_ENUM_HOSTS_QUERY = (DPN_MSGID_OFFSET or $000a);
|
|
{$EXTERNALSYM DPN_MSGID_ENUM_HOSTS_QUERY}
|
|
DPN_MSGID_ENUM_HOSTS_RESPONSE = (DPN_MSGID_OFFSET or $000b);
|
|
{$EXTERNALSYM DPN_MSGID_ENUM_HOSTS_RESPONSE}
|
|
DPN_MSGID_GROUP_INFO = (DPN_MSGID_OFFSET or $000c);
|
|
{$EXTERNALSYM DPN_MSGID_GROUP_INFO}
|
|
DPN_MSGID_HOST_MIGRATE = (DPN_MSGID_OFFSET or $000d);
|
|
{$EXTERNALSYM DPN_MSGID_HOST_MIGRATE}
|
|
DPN_MSGID_INDICATE_CONNECT = (DPN_MSGID_OFFSET or $000e);
|
|
{$EXTERNALSYM DPN_MSGID_INDICATE_CONNECT}
|
|
DPN_MSGID_INDICATED_CONNECT_ABORTED = (DPN_MSGID_OFFSET or $000f);
|
|
{$EXTERNALSYM DPN_MSGID_INDICATED_CONNECT_ABORTED}
|
|
DPN_MSGID_PEER_INFO = (DPN_MSGID_OFFSET or $0010);
|
|
{$EXTERNALSYM DPN_MSGID_PEER_INFO}
|
|
DPN_MSGID_RECEIVE = (DPN_MSGID_OFFSET or $0011);
|
|
{$EXTERNALSYM DPN_MSGID_RECEIVE}
|
|
DPN_MSGID_REMOVE_PLAYER_FROM_GROUP = (DPN_MSGID_OFFSET or $0012);
|
|
{$EXTERNALSYM DPN_MSGID_REMOVE_PLAYER_FROM_GROUP}
|
|
DPN_MSGID_RETURN_BUFFER = (DPN_MSGID_OFFSET or $0013);
|
|
{$EXTERNALSYM DPN_MSGID_RETURN_BUFFER}
|
|
DPN_MSGID_SEND_COMPLETE = (DPN_MSGID_OFFSET or $0014);
|
|
{$EXTERNALSYM DPN_MSGID_SEND_COMPLETE}
|
|
DPN_MSGID_SERVER_INFO = (DPN_MSGID_OFFSET or $0015);
|
|
{$EXTERNALSYM DPN_MSGID_SERVER_INFO}
|
|
DPN_MSGID_TERMINATE_SESSION = (DPN_MSGID_OFFSET or $0016);
|
|
{$EXTERNALSYM DPN_MSGID_TERMINATE_SESSION}
|
|
|
|
// Messages added for DirectX 9
|
|
DPN_MSGID_CREATE_THREAD = (DPN_MSGID_OFFSET or $0017);
|
|
{$EXTERNALSYM DPN_MSGID_CREATE_THREAD}
|
|
DPN_MSGID_DESTROY_THREAD = (DPN_MSGID_OFFSET or $0018);
|
|
{$EXTERNALSYM DPN_MSGID_DESTROY_THREAD}
|
|
DPN_MSGID_NAT_RESOLVER_QUERY = (DPN_MSGID_OFFSET or $0101);
|
|
{$EXTERNALSYM DPN_MSGID_NAT_RESOLVER_QUERY}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Constants
|
|
*
|
|
****************************************************************************)
|
|
|
|
DPNID_ALL_PLAYERS_GROUP = 0;
|
|
{$EXTERNALSYM DPNID_ALL_PLAYERS_GROUP}
|
|
|
|
//
|
|
// DESTROY_GROUP reasons
|
|
//
|
|
DPNDESTROYGROUPREASON_NORMAL = $0001;
|
|
{$EXTERNALSYM DPNDESTROYGROUPREASON_NORMAL}
|
|
DPNDESTROYGROUPREASON_AUTODESTRUCTED = $0002;
|
|
{$EXTERNALSYM DPNDESTROYGROUPREASON_AUTODESTRUCTED}
|
|
DPNDESTROYGROUPREASON_SESSIONTERMINATED = $0003;
|
|
{$EXTERNALSYM DPNDESTROYGROUPREASON_SESSIONTERMINATED}
|
|
|
|
//
|
|
// DESTROY_PLAYER reasons
|
|
//
|
|
DPNDESTROYPLAYERREASON_NORMAL = $0001;
|
|
{$EXTERNALSYM DPNDESTROYPLAYERREASON_NORMAL}
|
|
DPNDESTROYPLAYERREASON_CONNECTIONLOST = $0002;
|
|
{$EXTERNALSYM DPNDESTROYPLAYERREASON_CONNECTIONLOST}
|
|
DPNDESTROYPLAYERREASON_SESSIONTERMINATED = $0003;
|
|
{$EXTERNALSYM DPNDESTROYPLAYERREASON_SESSIONTERMINATED}
|
|
DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER = $0004;
|
|
{$EXTERNALSYM DPNDESTROYPLAYERREASON_HOSTDESTROYEDPLAYER}
|
|
|
|
|
|
DPN_MAX_APPDESC_RESERVEDDATA_SIZE = 64;
|
|
{$EXTERNALSYM DPN_MAX_APPDESC_RESERVEDDATA_SIZE}
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Flags
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Asynchronous operation flags (For Async Ops)
|
|
//
|
|
DPNOP_SYNC = $80000000;
|
|
{$EXTERNALSYM DPNOP_SYNC}
|
|
|
|
//
|
|
// Add player to group flags (For AddPlayerToGroup)
|
|
//
|
|
DPNADDPLAYERTOGROUP_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNADDPLAYERTOGROUP_SYNC}
|
|
|
|
//
|
|
// Cancel flags
|
|
//
|
|
DPNCANCEL_CONNECT = $0001;
|
|
{$EXTERNALSYM DPNCANCEL_CONNECT}
|
|
DPNCANCEL_ENUM = $0002;
|
|
{$EXTERNALSYM DPNCANCEL_ENUM}
|
|
DPNCANCEL_SEND = $0004;
|
|
{$EXTERNALSYM DPNCANCEL_SEND}
|
|
DPNCANCEL_ALL_OPERATIONS = $8000;
|
|
{$EXTERNALSYM DPNCANCEL_ALL_OPERATIONS}
|
|
|
|
// Flags added for DirectX 9
|
|
DPNCANCEL_PLAYER_SENDS = $80000000;
|
|
{$EXTERNALSYM DPNCANCEL_PLAYER_SENDS}
|
|
DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH = (DPNCANCEL_PLAYER_SENDS or $00010000);
|
|
{$EXTERNALSYM DPNCANCEL_PLAYER_SENDS_PRIORITY_HIGH}
|
|
DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL = (DPNCANCEL_PLAYER_SENDS or $00020000);
|
|
{$EXTERNALSYM DPNCANCEL_PLAYER_SENDS_PRIORITY_NORMAL}
|
|
DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW = (DPNCANCEL_PLAYER_SENDS or $00040000);
|
|
{$EXTERNALSYM DPNCANCEL_PLAYER_SENDS_PRIORITY_LOW}
|
|
|
|
//
|
|
// Close flags (for Close, added for DirectX 9)
|
|
//
|
|
DPNCLOSE_IMMEDIATE = $00000001;
|
|
{$EXTERNALSYM DPNCLOSE_IMMEDIATE}
|
|
|
|
//
|
|
// Connect flags (For Connect)
|
|
//
|
|
DPNCONNECT_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNCONNECT_SYNC}
|
|
DPNCONNECT_OKTOQUERYFORADDRESSING = $0001;
|
|
{$EXTERNALSYM DPNCONNECT_OKTOQUERYFORADDRESSING}
|
|
|
|
//
|
|
// Create group flags (For CreateGroup)
|
|
//
|
|
DPNCREATEGROUP_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNCREATEGROUP_SYNC}
|
|
|
|
//
|
|
// Destroy group flags (For DestroyGroup)
|
|
//
|
|
DPNDESTROYGROUP_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNDESTROYGROUP_SYNC}
|
|
|
|
//
|
|
// Enumerate clients and groups flags (For EnumPlayersAndGroups)
|
|
//
|
|
DPNENUM_PLAYERS = $0001;
|
|
{$EXTERNALSYM DPNENUM_PLAYERS}
|
|
DPNENUM_GROUPS = $0010;
|
|
{$EXTERNALSYM DPNENUM_GROUPS}
|
|
|
|
//
|
|
// Enum hosts flags (For EnumHosts)
|
|
//
|
|
DPNENUMHOSTS_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNENUMHOSTS_SYNC}
|
|
DPNENUMHOSTS_OKTOQUERYFORADDRESSING = $0001;
|
|
{$EXTERNALSYM DPNENUMHOSTS_OKTOQUERYFORADDRESSING}
|
|
DPNENUMHOSTS_NOBROADCASTFALLBACK = $0002;
|
|
{$EXTERNALSYM DPNENUMHOSTS_NOBROADCASTFALLBACK}
|
|
|
|
//
|
|
// Enum service provider flags (For EnumSP)
|
|
//
|
|
DPNENUMSERVICEPROVIDERS_ALL = $0001;
|
|
{$EXTERNALSYM DPNENUMSERVICEPROVIDERS_ALL}
|
|
|
|
//
|
|
// GetLocalHostAddresses flags (added for DirectX 9)
|
|
//
|
|
DPNGETLOCALHOSTADDRESSES_COMBINED = $0001;
|
|
{$EXTERNALSYM DPNGETLOCALHOSTADDRESSES_COMBINED}
|
|
|
|
//
|
|
// Get send queue info flags (For GetSendQueueInfo)
|
|
//
|
|
DPNGETSENDQUEUEINFO_PRIORITY_NORMAL = $0001;
|
|
{$EXTERNALSYM DPNGETSENDQUEUEINFO_PRIORITY_NORMAL}
|
|
DPNGETSENDQUEUEINFO_PRIORITY_HIGH = $0002;
|
|
{$EXTERNALSYM DPNGETSENDQUEUEINFO_PRIORITY_HIGH}
|
|
DPNGETSENDQUEUEINFO_PRIORITY_LOW = $0004;
|
|
{$EXTERNALSYM DPNGETSENDQUEUEINFO_PRIORITY_LOW}
|
|
|
|
//
|
|
// Group information flags (For Group Info)
|
|
//
|
|
DPNGROUP_AUTODESTRUCT = $0001;
|
|
{$EXTERNALSYM DPNGROUP_AUTODESTRUCT}
|
|
|
|
//
|
|
// Host flags (For Host)
|
|
//
|
|
DPNHOST_OKTOQUERYFORADDRESSING = $0001;
|
|
{$EXTERNALSYM DPNHOST_OKTOQUERYFORADDRESSING}
|
|
|
|
//
|
|
// Set info
|
|
//
|
|
DPNINFO_NAME = $0001;
|
|
{$EXTERNALSYM DPNINFO_NAME}
|
|
DPNINFO_DATA = $0002;
|
|
{$EXTERNALSYM DPNINFO_DATA}
|
|
|
|
//
|
|
// Initialize flags (For Initialize)
|
|
//
|
|
DPNINITIALIZE_DISABLEPARAMVAL = $0001;
|
|
{$EXTERNALSYM DPNINITIALIZE_DISABLEPARAMVAL}
|
|
// Flags added for DirectX 9
|
|
DPNINITIALIZE_HINT_LANSESSION = $0002;
|
|
{$EXTERNALSYM DPNINITIALIZE_HINT_LANSESSION}
|
|
DPNINITIALIZE_DISABLELINKTUNING = $0004;
|
|
{$EXTERNALSYM DPNINITIALIZE_DISABLELINKTUNING}
|
|
|
|
|
|
//
|
|
// Register Lobby flags
|
|
//
|
|
DPNLOBBY_REGISTER = $0001;
|
|
{$EXTERNALSYM DPNLOBBY_REGISTER}
|
|
DPNLOBBY_UNREGISTER = $0002;
|
|
{$EXTERNALSYM DPNLOBBY_UNREGISTER}
|
|
|
|
//
|
|
// Player information flags (For Player Info / Player Messages)
|
|
//
|
|
DPNPLAYER_LOCAL = $0002;
|
|
{$EXTERNALSYM DPNPLAYER_LOCAL}
|
|
DPNPLAYER_HOST = $0004;
|
|
{$EXTERNALSYM DPNPLAYER_HOST}
|
|
|
|
//
|
|
// Receive indication flags (added for DirectX 9)
|
|
//
|
|
DPNRECEIVE_GUARANTEED = $0001;
|
|
{$EXTERNALSYM DPNRECEIVE_GUARANTEED}
|
|
DPNRECEIVE_COALESCED = $0002;
|
|
{$EXTERNALSYM DPNRECEIVE_COALESCED}
|
|
|
|
//
|
|
// Remove player from group flags (For RemovePlayerFromGroup)
|
|
//
|
|
DPNREMOVEPLAYERFROMGROUP_SYN = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNREMOVEPLAYERFROMGROUP_SYN}
|
|
|
|
//
|
|
// Send flags (For Send/SendTo)
|
|
//
|
|
DPNSEND_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNSEND_SYNC}
|
|
DPNSEND_NOCOPY = $0001;
|
|
{$EXTERNALSYM DPNSEND_NOCOPY}
|
|
DPNSEND_NOCOMPLETE = $0002;
|
|
{$EXTERNALSYM DPNSEND_NOCOMPLETE}
|
|
DPNSEND_COMPLETEONPROCESS = $0004;
|
|
{$EXTERNALSYM DPNSEND_COMPLETEONPROCESS}
|
|
DPNSEND_GUARANTEED = $0008;
|
|
{$EXTERNALSYM DPNSEND_GUARANTEED}
|
|
DPNSEND_NONSEQUENTIAL = $0010;
|
|
{$EXTERNALSYM DPNSEND_NONSEQUENTIAL}
|
|
DPNSEND_NOLOOPBACK = $0020;
|
|
{$EXTERNALSYM DPNSEND_NOLOOPBACK}
|
|
DPNSEND_PRIORITY_LOW = $0040;
|
|
{$EXTERNALSYM DPNSEND_PRIORITY_LOW}
|
|
DPNSEND_PRIORITY_HIGH = $0080;
|
|
{$EXTERNALSYM DPNSEND_PRIORITY_HIGH}
|
|
// Flag added for DirectX 9
|
|
DPNSEND_COALESCE = $0100;
|
|
{$EXTERNALSYM DPNSEND_COALESCE}
|
|
|
|
//
|
|
// Send complete indication flags (added for DirectX 9)
|
|
//
|
|
DPNSENDCOMPLETE_GUARANTEED = $0001;
|
|
{$EXTERNALSYM DPNSENDCOMPLETE_GUARANTEED}
|
|
DPNSENDCOMPLETE_COALESCED = $0002;
|
|
{$EXTERNALSYM DPNSENDCOMPLETE_COALESCED}
|
|
|
|
//
|
|
// Session Flags (for DPN_APPLICATION_DESC)
|
|
//
|
|
DPNSESSION_CLIENT_SERVER = $0001;
|
|
{$EXTERNALSYM DPNSESSION_CLIENT_SERVER}
|
|
DPNSESSION_MIGRATE_HOST = $0004;
|
|
{$EXTERNALSYM DPNSESSION_MIGRATE_HOST}
|
|
DPNSESSION_NODPNSVR = $0040;
|
|
{$EXTERNALSYM DPNSESSION_NODPNSVR}
|
|
DPNSESSION_REQUIREPASSWORD = $0080;
|
|
{$EXTERNALSYM DPNSESSION_REQUIREPASSWORD}
|
|
// Flag added for DirectX 9
|
|
DPNSESSION_NOENUMS = $0100;
|
|
{$EXTERNALSYM DPNSESSION_NOENUMS}
|
|
DPNSESSION_FAST_SIGNED = $0200;
|
|
{$EXTERNALSYM DPNSESSION_FAST_SIGNED}
|
|
DPNSESSION_FULL_SIGNED = $0400;
|
|
{$EXTERNALSYM DPNSESSION_FULL_SIGNED}
|
|
|
|
//
|
|
// Set client info flags (For SetClientInfo)
|
|
//
|
|
DPNSETCLIENTINFO_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNSETCLIENTINFO_SYNC}
|
|
|
|
//
|
|
// Set group info flags (For SetGroupInfo)
|
|
//
|
|
DPNSETGROUPINFO_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNSETGROUPINFO_SYNC}
|
|
|
|
//
|
|
// Set peer info flags (For SetPeerInfo)
|
|
//
|
|
DPNSETPEERINFO_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNSETPEERINFO_SYNC}
|
|
|
|
//
|
|
// Set server info flags (For SetServerInfo)
|
|
//
|
|
DPNSETSERVERINFO_SYNC = DPNOP_SYNC;
|
|
{$EXTERNALSYM DPNSETSERVERINFO_SYNC}
|
|
|
|
//
|
|
// SP capabilities flags
|
|
//
|
|
DPNSPCAPS_SUPPORTSDPNSVR = $0001;
|
|
{$EXTERNALSYM DPNSPCAPS_SUPPORTSDPNSVR}
|
|
DPNSPCAPS_SUPPORTSDPNSRV = DPNSPCAPS_SUPPORTSDPNSVR;
|
|
{$EXTERNALSYM DPNSPCAPS_SUPPORTSDPNSRV}
|
|
DPNSPCAPS_SUPPORTSBROADCAST = $0002;
|
|
{$EXTERNALSYM DPNSPCAPS_SUPPORTSBROADCAST}
|
|
DPNSPCAPS_SUPPORTSALLADAPTERS = $0004;
|
|
{$EXTERNALSYM DPNSPCAPS_SUPPORTSALLADAPTERS}
|
|
// Flags added for DirectX 9
|
|
DPNSPCAPS_SUPPORTSTHREADPOOL = $0008;
|
|
{$EXTERNALSYM DPNSPCAPS_SUPPORTSTHREADPOOL}
|
|
DPNSPCAPS_NETWORKSIMULATOR = $0010;
|
|
{$EXTERNALSYM DPNSPCAPS_NETWORKSIMULATOR}
|
|
|
|
//
|
|
// SP information flags (added for DirectX 9)
|
|
//
|
|
DPNSPINFO_NETWORKSIMULATORDEVICE = $0001;
|
|
{$EXTERNALSYM DPNSPINFO_NETWORKSIMULATORDEVICE}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Structures (Non-Message)
|
|
*
|
|
****************************************************************************)
|
|
|
|
type
|
|
//
|
|
// Application description
|
|
//
|
|
|
|
PDPNApplicationDesc = ^TDPNApplicationDesc;
|
|
_DPN_APPLICATION_DESC = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags (DPNSESSION_...)
|
|
guidInstance: TGUID; // Instance GUID
|
|
guidApplication: TGUID; // Application GUID
|
|
dwMaxPlayers: DWORD; // Maximum # of players allowed (0=no limit)
|
|
dwCurrentPlayers: DWORD; // Current # of players allowed
|
|
pwszSessionName: PWideChar; // Name of the session
|
|
pwszPassword: PWideChar; // Password for the session
|
|
pvReservedData: Pointer;
|
|
dwReservedDataSize: DWORD;
|
|
pvApplicationReservedData: Pointer;
|
|
dwApplicationReservedDataSize: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _DPN_APPLICATION_DESC}
|
|
DPN_APPLICATION_DESC = _DPN_APPLICATION_DESC;
|
|
{$EXTERNALSYM DPN_APPLICATION_DESC}
|
|
TDPNApplicationDesc = _DPN_APPLICATION_DESC;
|
|
|
|
//
|
|
// Generic Buffer Description
|
|
//
|
|
PBufferDesc = ^TBufferDesc;
|
|
_BUFFERDESC = packed record
|
|
wBufferSize:DWORD;
|
|
pBufferData: PByte;
|
|
end;
|
|
{$EXTERNALSYM _BUFFERDESC}
|
|
BUFFERDESC = _BUFFERDESC;
|
|
{$EXTERNALSYM BUFFERDESC}
|
|
TBufferDesc = _BUFFERDESC;
|
|
|
|
PDPNBufferDesc = ^TDPNBufferDesc;
|
|
DPN_BUFFER_DESC = _BUFFERDESC;
|
|
{$EXTERNALSYM DPN_BUFFER_DESC}
|
|
TDPNBufferDesc = DPN_BUFFER_DESC;
|
|
|
|
//
|
|
// DirectPlay8 capabilities
|
|
//
|
|
PDPNCaps = ^TDPNCaps;
|
|
_DPN_CAPS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags
|
|
dwConnectTimeout: DWORD; // ms before a connect request times out
|
|
dwConnectRetries: DWORD; // # of times to attempt the connection
|
|
dwTimeoutUntilKeepAlive: DWORD; // ms of inactivity before a keep alive is sent
|
|
end;
|
|
{$EXTERNALSYM _DPN_CAPS}
|
|
DPN_CAPS = _DPN_CAPS;
|
|
{$EXTERNALSYM DPN_CAPS}
|
|
TDPNCaps = _DPN_CAPS;
|
|
|
|
//
|
|
// Extended capabilities structures (added for DirectX 9)
|
|
//
|
|
PDPNCapsEx = ^TDPNCapsEx;
|
|
_DPN_CAPS_EX = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags
|
|
dwConnectTimeout: DWORD; // ms before a connect request times out
|
|
dwConnectRetries: DWORD; // # of times to attempt the connection
|
|
dwTimeoutUntilKeepAlive: DWORD; // ms of inactivity before a keep alive is sent
|
|
dwMaxRecvMsgSize: DWORD; // maximum size in bytes of message that can be received
|
|
dwNumSendRetries: DWORD; // maximum number of send retries before link is considered dead
|
|
dwMaxSendRetryInterval: DWORD; // maximum period in msec between send retries
|
|
dwDropThresholdRate: DWORD; // percentage of dropped packets before throttling
|
|
dwThrottleRate: DWORD; // percentage amount to reduce send window when throttling
|
|
dwNumHardDisconnectSends: DWORD; // number of hard disconnect frames to send when close immediate flag is specified
|
|
dwMaxHardDisconnectPeriod: DWORD; // maximum period between hard disconnect sends
|
|
end;
|
|
{$EXTERNALSYM _DPN_CAPS_EX}
|
|
DPN_CAPS_EX = _DPN_CAPS_EX;
|
|
{$EXTERNALSYM DPN_CAPS_EX}
|
|
TDPNCapsEx = _DPN_CAPS_EX;
|
|
|
|
// Connection Statistics information
|
|
|
|
PDPNConnectionInfo = ^TDPNConnectionInfo;
|
|
_DPN_CONNECTION_INFO = packed record
|
|
dwSize: DWORD;
|
|
dwRoundTripLatencyMS: DWORD;
|
|
dwThroughputBPS: DWORD;
|
|
dwPeakThroughputBPS: DWORD;
|
|
|
|
dwBytesSentGuaranteed: DWORD;
|
|
dwPacketsSentGuaranteed: DWORD;
|
|
dwBytesSentNonGuaranteed: DWORD;
|
|
dwPacketsSentNonGuaranteed: DWORD;
|
|
|
|
dwBytesRetried: DWORD; // Guaranteed only
|
|
dwPacketsRetried: DWORD; // Guaranteed only
|
|
dwBytesDropped: DWORD; // Non Guaranteed only
|
|
dwPacketsDropped: DWORD; // Non Guaranteed only
|
|
|
|
dwMessagesTransmittedHighPriority: DWORD;
|
|
dwMessagesTimedOutHighPriority: DWORD;
|
|
dwMessagesTransmittedNormalPriority: DWORD;
|
|
dwMessagesTimedOutNormalPriority: DWORD;
|
|
dwMessagesTransmittedLowPriority: DWORD;
|
|
dwMessagesTimedOutLowPriority: DWORD;
|
|
|
|
dwBytesReceivedGuaranteed: DWORD;
|
|
dwPacketsReceivedGuaranteed: DWORD;
|
|
dwBytesReceivedNonGuaranteed: DWORD;
|
|
dwPacketsReceivedNonGuaranteed: DWORD;
|
|
dwMessagesReceived: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _DPN_CONNECTION_INFO}
|
|
DPN_CONNECTION_INFO = _DPN_CONNECTION_INFO;
|
|
{$EXTERNALSYM DPN_CONNECTION_INFO}
|
|
TDPNConnectionInfo = _DPN_CONNECTION_INFO;
|
|
|
|
|
|
//
|
|
// Group information strucutre
|
|
//
|
|
PDPNGroupInfo = ^TDPNGroupInfo;
|
|
_DPN_GROUP_INFO = packed record
|
|
dwSize: DWORD; // size of this structure
|
|
dwInfoFlags: DWORD; // information contained
|
|
pwszName: PWideChar; // Unicode Name
|
|
pvData: Pointer; // data block
|
|
dwDataSize: DWORD; // size in BYTES of data block
|
|
dwGroupFlags: DWORD; // group flags (DPNGROUP_...)
|
|
end;
|
|
{$EXTERNALSYM _DPN_GROUP_INFO}
|
|
DPN_GROUP_INFO = _DPN_GROUP_INFO;
|
|
{$EXTERNALSYM DPN_GROUP_INFO}
|
|
TDPNGroupInfo = _DPN_GROUP_INFO;
|
|
|
|
//
|
|
// Player information structure
|
|
//
|
|
PDPNPlayerInfo = ^TDPNPlayerInfo;
|
|
_DPN_PLAYER_INFO = packed record
|
|
dwSize: DWORD; // size of this structure
|
|
dwInfoFlags: DWORD; // information contained
|
|
pwszName: PWideChar; // Unicode Name
|
|
pvData: Pointer; // data block
|
|
dwDataSize: DWORD; // size in BYTES of data block
|
|
dwPlayerFlags: DWORD; // player flags (DPNPLAYER_...)
|
|
end;
|
|
{$EXTERNALSYM _DPN_PLAYER_INFO}
|
|
DPN_PLAYER_INFO = _DPN_PLAYER_INFO;
|
|
{$EXTERNALSYM DPN_PLAYER_INFO}
|
|
TDPNPlayerInfo = _DPN_PLAYER_INFO;
|
|
|
|
PDPNSecurityCredentials = ^TDPNSecurityCredentials;
|
|
_DPN_SECURITY_CREDENTIALS = record
|
|
end;
|
|
{$EXTERNALSYM _DPN_SECURITY_CREDENTIALS}
|
|
DPN_SECURITY_CREDENTIALS = _DPN_SECURITY_CREDENTIALS;
|
|
{$EXTERNALSYM DPN_SECURITY_CREDENTIALS}
|
|
TDPNSecurityCredentials = _DPN_SECURITY_CREDENTIALS;
|
|
|
|
PDPNSecurityDesc = ^TDPNSecurityDesc;
|
|
_DPN_SECURITY_DESC = record
|
|
end;
|
|
{$EXTERNALSYM _DPN_SECURITY_DESC}
|
|
DPN_SECURITY_DESC = _DPN_SECURITY_DESC;
|
|
{$EXTERNALSYM DPN_SECURITY_DESC}
|
|
TDPNSecurityDesc = _DPN_SECURITY_DESC;
|
|
|
|
//
|
|
// Service provider & adapter enumeration structure
|
|
//
|
|
PDPNServiceProviderInfo = ^TDPNServiceProviderInfo;
|
|
_DPN_SERVICE_PROVIDER_INFO = packed record
|
|
dwFlags: DWORD;
|
|
guid: TGUID; // SP Guid
|
|
pwszName: PWideChar; // Friendly Name
|
|
pvReserved: Pointer;
|
|
dwReserved: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _DPN_SERVICE_PROVIDER_INFO}
|
|
DPN_SERVICE_PROVIDER_INFO = _DPN_SERVICE_PROVIDER_INFO;
|
|
{$EXTERNALSYM DPN_SERVICE_PROVIDER_INFO}
|
|
TDPNServiceProviderInfo = _DPN_SERVICE_PROVIDER_INFO;
|
|
|
|
//
|
|
// Service provider caps structure
|
|
//
|
|
PDPNSpCaps = ^TDPNSpCaps;
|
|
_DPN_SP_CAPS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags ((DPNSPCAPS_...)
|
|
dwNumThreads: DWORD; // # of worker threads to use
|
|
dwDefaultEnumCount: DWORD; // default # of enum requests
|
|
dwDefaultEnumRetryInterval: DWORD; // default ms between enum requests
|
|
dwDefaultEnumTimeout: DWORD; // default enum timeout
|
|
dwMaxEnumPayloadSize: DWORD; // maximum size in bytes for enum payload data
|
|
dwBuffersPerThread: DWORD; // number of receive buffers per thread
|
|
dwSystemBufferSize: DWORD; // amount of buffering to do in addition to posted receive buffers
|
|
end;
|
|
{$EXTERNALSYM _DPN_SP_CAPS}
|
|
DPN_SP_CAPS = _DPN_SP_CAPS;
|
|
{$EXTERNALSYM DPN_SP_CAPS}
|
|
TDPNSpCaps = _DPN_SP_CAPS;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* IDirectPlay8 message handler call back structures
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Add player to group strucutre for message handler
|
|
// (DPN_MSGID_ADD_PLAYER_TO_GROUP)
|
|
//
|
|
PDPNMsgAddPlayerToGroup = ^TDPNMsgAddPlayerToGroup;
|
|
_DPNMSG_ADD_PLAYER_TO_GROUP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidGroup: TDPNID; // DPNID of group
|
|
pvGroupContext: Pointer; // Group context value
|
|
dpnidPlayer: TDPNID; // DPNID of added player
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_ADD_PLAYER_TO_GROUP}
|
|
DPNMSG_ADD_PLAYER_TO_GROUP = _DPNMSG_ADD_PLAYER_TO_GROUP;
|
|
{$EXTERNALSYM DPNMSG_ADD_PLAYER_TO_GROUP}
|
|
TDPNMsgAddPlayerToGroup = _DPNMSG_ADD_PLAYER_TO_GROUP;
|
|
|
|
//
|
|
// Async operation completion structure for message handler
|
|
// (DPN_MSGID_ASYNC_OP_COMPLETE)
|
|
//
|
|
PDPNMsgAsyncOpComplete = ^TDPNMsgAsyncOpComplete;
|
|
_DPNMSG_ASYNC_OP_COMPLETE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hAsyncOp: TDPNHandle; // DirectPlay8 async operation handle
|
|
pvUserContext: Pointer; // User context supplied
|
|
hResultCode: HRESULT; // HRESULT of operation
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_ASYNC_OP_COMPLETE}
|
|
DPNMSG_ASYNC_OP_COMPLETE = _DPNMSG_ASYNC_OP_COMPLETE;
|
|
{$EXTERNALSYM DPNMSG_ASYNC_OP_COMPLETE}
|
|
TDPNMsgAsyncOpComplete = _DPNMSG_ASYNC_OP_COMPLETE;
|
|
|
|
//
|
|
// Client info structure for message handler
|
|
// (DPN_MSGID_CLIENT_INFO)
|
|
//
|
|
PDPNMsgClientInfo = ^TDPNMsgClientInfo;
|
|
_DPNMSG_CLIENT_INFO = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidClient: TDPNID; // DPNID of client
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_CLIENT_INFO}
|
|
DPNMSG_CLIENT_INFO = _DPNMSG_CLIENT_INFO;
|
|
{$EXTERNALSYM DPNMSG_CLIENT_INFO}
|
|
TDPNMsgClientInfo = _DPNMSG_CLIENT_INFO;
|
|
|
|
//
|
|
// Connect complete structure for message handler
|
|
// (DPN_MSGID_CONNECT_COMPLETE)
|
|
//
|
|
PDPNMsgConnectComplete = ^TDPNMsgConnectComplete;
|
|
_DPNMSG_CONNECT_COMPLETE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hAsyncOp: TDPNHandle; // DirectPlay8 Async operation handle
|
|
pvUserContext: Pointer; // User context supplied at Connect
|
|
hResultCode: HRESULT; // HRESULT of connection attempt
|
|
pvApplicationReplyData: Pointer; // Connection reply data from Host/Server
|
|
dwApplicationReplyDataSize: DWORD; // Size (in bytes) of pvApplicationReplyData
|
|
|
|
// Fields added for DirectX 9
|
|
dpnidLocal: TDPNID; // DPNID of local player
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_CONNECT_COMPLETE}
|
|
DPNMSG_CONNECT_COMPLETE = _DPNMSG_CONNECT_COMPLETE;
|
|
{$EXTERNALSYM DPNMSG_CONNECT_COMPLETE}
|
|
TDPNMsgConnectComplete = _DPNMSG_CONNECT_COMPLETE;
|
|
|
|
//
|
|
// Create group structure for message handler
|
|
// (DPN_MSGID_CREATE_GROUP)
|
|
//
|
|
PDPNMsgCreateGroup = ^TDPNMsgCreateGroup;
|
|
_DPNMSG_CREATE_GROUP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidGroup: TDPNID; // DPNID of new group
|
|
dpnidOwner: TDPNID; // Owner of newgroup
|
|
pvGroupContext: Pointer; // Group context value
|
|
|
|
// Fields added for DirectX 9
|
|
pvOwnerContext: Pointer; // Owner context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_CREATE_GROUP}
|
|
DPNMSG_CREATE_GROUP = _DPNMSG_CREATE_GROUP;
|
|
{$EXTERNALSYM DPNMSG_CREATE_GROUP}
|
|
TDPNMsgCreateGroup = _DPNMSG_CREATE_GROUP;
|
|
|
|
//
|
|
// Create player structure for message handler
|
|
// (DPN_MSGID_CREATE_PLAYER)
|
|
//
|
|
PDPNMsgCreatePlayer = ^TDPNMsgCreatePlayer;
|
|
_DPNMSG_CREATE_PLAYER = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidPlayer: DPNID; // DPNID of new player
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_CREATE_PLAYER}
|
|
DPNMSG_CREATE_PLAYER = _DPNMSG_CREATE_PLAYER;
|
|
{$EXTERNALSYM DPNMSG_CREATE_PLAYER}
|
|
TDPNMsgCreatePlayer = _DPNMSG_CREATE_PLAYER;
|
|
|
|
//
|
|
// Destroy group structure for message handler
|
|
// (DPN_MSGID_DESTROY_GROUP)
|
|
//
|
|
PDPNMsgDestroyGroup = ^TDPNMsgDestroyGroup;
|
|
_DPNMSG_DESTROY_GROUP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidGroup: TDPNID; // DPNID of destroyed group
|
|
pvGroupContext: Pointer; // Group context value
|
|
dwReason: DWORD; // Information only
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_DESTROY_GROUP}
|
|
DPNMSG_DESTROY_GROUP = _DPNMSG_DESTROY_GROUP;
|
|
{$EXTERNALSYM DPNMSG_DESTROY_GROUP}
|
|
TDPNMsgDestroyGroup = _DPNMSG_DESTROY_GROUP;
|
|
|
|
//
|
|
// Destroy player structure for message handler
|
|
// (DPN_MSGID_DESTROY_PLAYER)
|
|
//
|
|
PDPNMsgDestroyPlayer = ^TDPNMsgDestroyPlayer;
|
|
_DPNMSG_DESTROY_PLAYER = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidPlayer: TDPNID; // DPNID of leaving player
|
|
pvPlayerContext: Pointer; // Player context value
|
|
dwReason: DWORD; // Information only
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_DESTROY_PLAYER}
|
|
DPNMSG_DESTROY_PLAYER = _DPNMSG_DESTROY_PLAYER;
|
|
{$EXTERNALSYM DPNMSG_DESTROY_PLAYER}
|
|
TDPNMsgDestroyPlayer = _DPNMSG_DESTROY_PLAYER;
|
|
|
|
//
|
|
// Enumeration request received structure for message handler
|
|
// (DPN_MSGID_ENUM_HOSTS_QUERY)
|
|
//
|
|
PDPNMsgEnumHostsQuery = ^TDPNMsgEnumHostsQuery;
|
|
_DPNMSG_ENUM_HOSTS_QUERY = packed record
|
|
dwSize: DWORD; // Size of this structure.
|
|
pAddressSender: IDirectPlay8Address; // Address of client who sent the request
|
|
pAddressDevice: IDirectPlay8Address; // Address of device request was received on
|
|
pvReceivedData: Pointer; // Request data (set on client)
|
|
dwReceivedDataSize: DWORD; // Request data size (set on client)
|
|
dwMaxResponseDataSize: DWORD; // Max allowable size of enum response
|
|
pvResponseData: Pointer; // Optional query repsonse (user set)
|
|
dwResponseDataSize: DWORD; // Optional query response size (user set)
|
|
pvResponseContext: Pointer; // Optional query response context (user set)
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_ENUM_HOSTS_QUERY}
|
|
DPNMSG_ENUM_HOSTS_QUERY = _DPNMSG_ENUM_HOSTS_QUERY;
|
|
{$EXTERNALSYM DPNMSG_ENUM_HOSTS_QUERY}
|
|
TDPNMsgEnumHostsQuery = _DPNMSG_ENUM_HOSTS_QUERY;
|
|
|
|
//
|
|
// Enumeration response received structure for message handler
|
|
// (DPN_MSGID_ENUM_HOSTS_RESPONSE)
|
|
//
|
|
PDPNMsgEnumHostsResponse = ^TDPNMsgEnumHostsResponse;
|
|
_DPNMSG_ENUM_HOSTS_RESPONSE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
pAddressSender: IDirectPlay8Address; // Address of host who responded
|
|
pAddressDevice: IDirectPlay8Address; // Device response was received on
|
|
pApplicationDescription: PDPNApplicationDesc; // Application description for the session
|
|
pvResponseData: Pointer; // Optional response data (set on host)
|
|
dwResponseDataSize: DWORD; // Optional response data size (set on host)
|
|
pvUserContext: Pointer; // Context value supplied for enumeration
|
|
dwRoundTripLatencyMS: DWORD; // Round trip latency in MS
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_ENUM_HOSTS_RESPONSE}
|
|
DPNMSG_ENUM_HOSTS_RESPONSE = _DPNMSG_ENUM_HOSTS_RESPONSE;
|
|
{$EXTERNALSYM DPNMSG_ENUM_HOSTS_RESPONSE}
|
|
TDPNMsgEnumHostsResponse = _DPNMSG_ENUM_HOSTS_RESPONSE;
|
|
|
|
//
|
|
// Group info structure for message handler
|
|
// (DPN_MSGID_GROUP_INFO)
|
|
//
|
|
PDPNMsgGroupInfo = ^TDPNMsgGroupInfo;
|
|
_DPNMSG_GROUP_INFO = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidGroup: TDPNID; // DPNID of group
|
|
pvGroupContext: Pointer; // Group context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_GROUP_INFO}
|
|
DPNMSG_GROUP_INFO = _DPNMSG_GROUP_INFO;
|
|
{$EXTERNALSYM DPNMSG_GROUP_INFO}
|
|
TDPNMsgGroupInfo = _DPNMSG_GROUP_INFO;
|
|
|
|
//
|
|
// Migrate host structure for message handler
|
|
// (DPN_MSGID_HOST_MIGRATE)
|
|
//
|
|
PDPNMsgHostMigrate = ^TDPNMsgHostMigrate;
|
|
_DPNMSG_HOST_MIGRATE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidNewHost: TDPNID; // DPNID of new Host player
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_HOST_MIGRATE}
|
|
DPNMSG_HOST_MIGRATE = _DPNMSG_HOST_MIGRATE;
|
|
{$EXTERNALSYM DPNMSG_HOST_MIGRATE}
|
|
TDPNMsgHostMigrate = _DPNMSG_HOST_MIGRATE;
|
|
|
|
//
|
|
// Indicate connect structure for message handler
|
|
// (DPN_MSGID_INDICATE_CONNECT)
|
|
//
|
|
PDPNMsgIndicateConnect = ^TDPNMsgIndicateConnect;
|
|
_DPNMSG_INDICATE_CONNECT = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
pvUserConnectData: Pointer; // Connecting player data
|
|
dwUserConnectDataSize: DWORD; // Size (in bytes) of pvUserConnectData
|
|
pvReplyData: Pointer; // Connection reply data
|
|
dwReplyDataSize: DWORD; // Size (in bytes) of pvReplyData
|
|
pvReplyContext: Pointer; // Buffer context for pvReplyData
|
|
pvPlayerContext: Pointer; // Player context preset
|
|
pAddressPlayer: IDirectPlay8Address; // Address of connecting player
|
|
pAddressDevice: IDirectPlay8Address; // Address of device receiving connect attempt
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_INDICATE_CONNECT}
|
|
DPNMSG_INDICATE_CONNECT = _DPNMSG_INDICATE_CONNECT;
|
|
{$EXTERNALSYM DPNMSG_INDICATE_CONNECT}
|
|
TDPNMsgIndicateConnect = _DPNMSG_INDICATE_CONNECT;
|
|
|
|
//
|
|
// Indicated connect aborted structure for message handler
|
|
// (DPN_MSGID_INDICATED_CONNECT_ABORTED)
|
|
//
|
|
PDPNMsgIndicatedConnectAborted = ^TDPNMsgIndicatedConnectAborted;
|
|
_DPNMSG_INDICATED_CONNECT_ABORTED = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
pvPlayerContext: Pointer; // Player context preset from DPNMSG_INDICATE_CONNECT
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_INDICATED_CONNECT_ABORTED}
|
|
DPNMSG_INDICATED_CONNECT_ABORTED = _DPNMSG_INDICATED_CONNECT_ABORTED;
|
|
{$EXTERNALSYM DPNMSG_INDICATED_CONNECT_ABORTED}
|
|
TDPNMsgIndicatedConnectAborted = _DPNMSG_INDICATED_CONNECT_ABORTED;
|
|
|
|
//
|
|
// Peer info structure for message handler
|
|
// (DPN_MSGID_PEER_INFO)
|
|
//
|
|
PDPNMsgPeerInfo = ^TDPNMsgPeerInfo;
|
|
_DPNMSG_PEER_INFO = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidPeer: TDPNID; // DPNID of peer
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_PEER_INFO}
|
|
DPNMSG_PEER_INFO = _DPNMSG_PEER_INFO;
|
|
{$EXTERNALSYM DPNMSG_PEER_INFO}
|
|
TDPNMsgPeerInfo = _DPNMSG_PEER_INFO;
|
|
|
|
//
|
|
// Receive structure for message handler
|
|
// (DPN_MSGID_RECEIVE)
|
|
//
|
|
PDPNMsgReceive = ^TDPNMsgReceive;
|
|
_DPNMSG_RECEIVE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidSender: TDPNID; // DPNID of sending player
|
|
pvPlayerContext: Pointer; // Player context value of sending player
|
|
pReceiveData: PByte; // Received data
|
|
dwReceiveDataSize: DWORD; // Size (in bytes) of pReceiveData
|
|
hBufferHandle: TDPNHandle; // Buffer handle for pReceiveData
|
|
|
|
// Fields added for DirectX 9
|
|
dwReceiveFlags: DWORD; // Flags describing how message was received
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_RECEIVE}
|
|
DPNMSG_RECEIVE = _DPNMSG_RECEIVE;
|
|
{$EXTERNALSYM DPNMSG_RECEIVE}
|
|
TDPNMsgReceive = _DPNMSG_RECEIVE;
|
|
|
|
//
|
|
// Remove player from group structure for message handler
|
|
// (DPN_MSGID_REMOVE_PLAYER_FROM_GROUP)
|
|
//
|
|
PDPNMsgRemovePlayerFromGroup = ^TDPNMsgRemovePlayerFromGroup;
|
|
_DPNMSG_REMOVE_PLAYER_FROM_GROUP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidGroup: TDPNID; // DPNID of group
|
|
pvGroupContext: Pointer; // Group context value
|
|
dpnidPlayer: TDPNID; // DPNID of deleted player
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_REMOVE_PLAYER_FROM_GROUP}
|
|
DPNMSG_REMOVE_PLAYER_FROM_GROUP = _DPNMSG_REMOVE_PLAYER_FROM_GROUP;
|
|
{$EXTERNALSYM DPNMSG_REMOVE_PLAYER_FROM_GROUP}
|
|
TDPNMsgRemovePlayerFromGroup = _DPNMSG_REMOVE_PLAYER_FROM_GROUP;
|
|
|
|
//
|
|
// Returned buffer structure for message handler
|
|
// (DPN_MSGID_RETURN_BUFFER)
|
|
//
|
|
PDPNMsgReturnBuffer = ^TDPNMsgReturnBuffer;
|
|
_DPNMSG_RETURN_BUFFER = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hResultCode: HRESULT; // Return value of operation
|
|
pvBuffer: Pointer; // Buffer being returned
|
|
pvUserContext: Pointer; // Context associated with buffer
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_RETURN_BUFFER}
|
|
DPNMSG_RETURN_BUFFER = _DPNMSG_RETURN_BUFFER;
|
|
{$EXTERNALSYM DPNMSG_RETURN_BUFFER}
|
|
TDPNMsgReturnBuffer = _DPNMSG_RETURN_BUFFER;
|
|
|
|
//
|
|
// Send complete structure for message handler
|
|
// (DPN_MSGID_SEND_COMPLETE)
|
|
//
|
|
PDPNMsgSendComplete = ^TDPNMsgSendComplete;
|
|
_DPNMSG_SEND_COMPLETE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hAsyncOp: TDPNHandle; // DirectPlay8 Async operation handle
|
|
pvUserContext: Pointer; // User context supplied at Send/SendTo
|
|
hResultCode: HRESULT; // HRESULT of send
|
|
dwSendTime: DWORD; // Send time in ms
|
|
|
|
// Fields added for DirectX 9
|
|
dwFirstFrameRTT: DWORD; // RTT of the first frame in the message
|
|
dwFirstFrameRetryCount: DWORD; // Retry count of the first frame
|
|
dwSendCompleteFlags: DWORD; // Flags describing how message was sent
|
|
pBuffers: PDPNBufferDesc; // Pointer to array of buffers sent, if DirectPlay did not make a copy
|
|
dwNumBuffers: DWORD; // Number of buffers in previous array
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_SEND_COMPLETE}
|
|
DPNMSG_SEND_COMPLETE = _DPNMSG_SEND_COMPLETE;
|
|
{$EXTERNALSYM DPNMSG_SEND_COMPLETE}
|
|
TDPNMsgSendComplete = _DPNMSG_SEND_COMPLETE;
|
|
|
|
//
|
|
// Server info structure for message handler
|
|
// (DPN_MSGID_SERVER_INFO)
|
|
//
|
|
PDPNMsgServerInfo = ^TDPNMsgServerInfo;
|
|
_DPNMSG_SERVER_INFO = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dpnidServer: TDPNID; // DPNID of server
|
|
pvPlayerContext: Pointer; // Player context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_SERVER_INFO}
|
|
DPNMSG_SERVER_INFO = _DPNMSG_SERVER_INFO;
|
|
{$EXTERNALSYM DPNMSG_SERVER_INFO}
|
|
TDPNMsgServerInfo = _DPNMSG_SERVER_INFO;
|
|
|
|
//
|
|
// Terminated session structure for message handler
|
|
// (DPN_MSGID_TERMINATE_SESSION)
|
|
//
|
|
PDPNMsgTerminateSession = ^TDPNMsgTerminateSession;
|
|
_DPNMSG_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;
|
|
{$EXTERNALSYM _DPNMSG_TERMINATE_SESSION}
|
|
DPNMSG_TERMINATE_SESSION = _DPNMSG_TERMINATE_SESSION;
|
|
{$EXTERNALSYM DPNMSG_TERMINATE_SESSION}
|
|
TDPNMsgTerminateSession = _DPNMSG_TERMINATE_SESSION;
|
|
|
|
//
|
|
// Message structures added for DirectX 9
|
|
//
|
|
|
|
//
|
|
// Create thread info structure for message handler
|
|
// (DPN_MSGID_CREATE_THREAD)
|
|
//
|
|
PDPNMsgCreateThread = ^TDPNMsgCreateThread;
|
|
_DPNMSG_CREATE_THREAD = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags describing this thread
|
|
dwProcessorNum: DWORD; // Index of processor to which thread is bound
|
|
pvUserContext: Pointer; // Thread context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_CREATE_THREAD}
|
|
DPNMSG_CREATE_THREAD = _DPNMSG_CREATE_THREAD;
|
|
{$EXTERNALSYM DPNMSG_CREATE_THREAD}
|
|
TDPNMsgCreateThread = _DPNMSG_CREATE_THREAD;
|
|
|
|
//
|
|
// Destroy thread info structure for message handler
|
|
// (DPN_MSGID_DESTROY_THREAD)
|
|
//
|
|
PDPNMsgDestroyThread = ^TDPNMsgDestroyThread;
|
|
_DPNMSG_DESTROY_THREAD = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwProcessorNum: DWORD; // Index of processor to which thread was bound
|
|
pvUserContext: Pointer; // Thread context value
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_DESTROY_THREAD}
|
|
DPNMSG_DESTROY_THREAD = _DPNMSG_DESTROY_THREAD;
|
|
{$EXTERNALSYM DPNMSG_DESTROY_THREAD}
|
|
TDPNMsgDestroyThread = _DPNMSG_DESTROY_THREAD;
|
|
|
|
|
|
//
|
|
// Query-to-resolve-NAT-address structure for message handler
|
|
// (DPN_MSGID_NAT_RESOLVER_QUERY)
|
|
//
|
|
PDPNMsgNatResolverQuery = ^TDPNMsgNatResolverQuery;
|
|
_DPNMSG_NAT_RESOLVER_QUERY = packed record
|
|
dwSize: DWORD; // Size of this structure.
|
|
pAddressSender: IDirectPlay8Address; // Address of client that sent the query
|
|
pAddressDevice: IDirectPlay8Address; // Address of device on which query was received
|
|
pwszUserString: PWideChar; // User specified string, or NULL if none
|
|
end;
|
|
{$EXTERNALSYM _DPNMSG_NAT_RESOLVER_QUERY}
|
|
DPNMSG_NAT_RESOLVER_QUERY = _DPNMSG_NAT_RESOLVER_QUERY;
|
|
{$EXTERNALSYM DPNMSG_NAT_RESOLVER_QUERY}
|
|
TDPNMsgNatResolverQuery = _DPNMSG_NAT_RESOLVER_QUERY;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Functions
|
|
*
|
|
****************************************************************************)
|
|
|
|
(*
|
|
* This function is no longer supported. It is recommended that CoCreateInstance be used to create
|
|
* DirectPlay8 objects.
|
|
*
|
|
* extern HRESULT WINAPI DirectPlay8Create( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
|
|
*
|
|
*)
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Lobby Interface Pointer
|
|
*
|
|
****************************************************************************)
|
|
|
|
IDirectPlay8LobbiedApplication = interface;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Application Interfaces
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// COM definition for DirectPlay8 Client interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Client);'}
|
|
{$EXTERNALSYM IDirectPlay8Client}
|
|
IDirectPlay8Client = interface(IUnknown)
|
|
['{5102dacd-241b-11d3-aea7-006097b01411}']
|
|
(*** IDirectPlay8Client methods ***)
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
|
|
function EnumServiceProviders(pguidServiceProvider, pguidApplication: PGUID;
|
|
pSPInfoBuffer: PDPNServiceProviderInfo; out pcbEnumData, pcReturned: DWORD;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function EnumHosts(const pApplicationDesc: TDPNApplicationDesc;
|
|
pAddrHost, pDeviceInfo: IDirectPlay8Address; pUserEnumData: Pointer;
|
|
dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut: DWORD;
|
|
pvUserContext: Pointer; pAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function CancelAsyncOperation(hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function Connect(const pdnAppDesc: TDPNApplicationDesc;
|
|
pHostAddr: IDirectPlay8Address; pDeviceInfo: IDirectPlay8Address;
|
|
pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
|
|
pvUserConnectData: Pointer; dwUserConnectDataSize: DWORD; pvAsyncContext: Pointer;
|
|
phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function Send(const prgBufferDesc: TDPNBufferDesc; cBufferDesc, dwTimeOut: DWORD;
|
|
pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetSendQueueInfo(pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function GetApplicationDesc(pAppDescBuffer: PDPNApplicationDesc; var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetClientInfo(const pdpnPlayerInfo: TDPNPlayerInfo; pvAsyncContext: Pointer;
|
|
phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetServerInfo(pdpnPlayerInfo: PDPNPlayerInfo; 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(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
|
|
function SetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
|
|
function SetSPCaps(const pguidSP: TGUID; const pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
|
|
function GetSPCaps(const pguidSP: TGUID; var pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
|
|
function GetConnectionInfo(var pdpConnectionInfo: TDPNConnectionInfo; dwFlags: DWORD): HResult; stdcall;
|
|
function RegisterLobby(dpnHandle: TDPNHandle; pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
// COM definition for DirectPlay8 Server interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Server);'}
|
|
{$EXTERNALSYM IDirectPlay8Server}
|
|
IDirectPlay8Server = interface(IUnknown)
|
|
['{5102dace-241b-11d3-aea7-006097b01411}']
|
|
(*** IDirectPlay8Server methods ***)
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
|
|
function EnumServiceProviders(pguidServiceProvider, pguidApplication: PGUID;
|
|
pSPInfoBuffer: PDPNServiceProviderInfo; out pcbEnumData, 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: PDPNApplicationDesc; var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetServerInfo(pdpnPlayerInfo: PDPNPlayerInfo; pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetClientInfo(dpnid: TDPNID; pdpnPlayerInfo: PDPNPlayerInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function GetClientAddress(dpnid: TDPNID; out pAddress: IDirectPlay8Address; dwFlags: DWORD): HResult; stdcall;
|
|
function GetLocalHostAddresses(out prgpAddress: IDirectPlay8Address; var pcAddress: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetApplicationDesc(const pad: TDPNApplicationDesc; dwFlags: DWORD): HResult; stdcall;
|
|
function Host(const pdnAppDesc: TDPNApplicationDesc; prgpDeviceInfo: PIDirectPlay8Address;
|
|
cDeviceInfo: DWORD; pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
|
|
pvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
|
|
function SendTo(dpnid: TDPNID; const prgBufferDesc: TDPNBufferDesc; cBufferDesc, dwTimeOut: DWORD;
|
|
pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function CreateGroup(const pdpnGroupInfo: TDPNGroupInfo; pvGroupContext, 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: TDPNGroupInfo; pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetGroupInfo(dpnid: TDPNID; pdpnGroupInfo: PDPNGroupInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall; //todo: Changed
|
|
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; pvDestroyData: Pointer; dwDestroyDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function ReturnBuffer(hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetPlayerContext(dpnid: TDPNID; out ppvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
|
|
function GetGroupContext(dpnid: TDPNID; out ppvGroupContext: Pointer; dwFlags: DWORD): HResult; stdcall;
|
|
function GetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
|
|
function SetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
|
|
function SetSPCaps(const pguidSP: TGUID; const pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
|
|
function GetSPCaps(const pguidSP: TGUID; var pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
|
|
function GetConnectionInfo(dpnid: TDPNID; var pdpConnectionInfo: TDPNConnectionInfo; dwFlags: DWORD): HResult; stdcall;
|
|
function RegisterLobby(dpnHandle: TDPNHandle; pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
//
|
|
// COM definition for DirectPlay8 Peer interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8Peer);'}
|
|
{$EXTERNALSYM IDirectPlay8Peer}
|
|
IDirectPlay8Peer = interface(IUnknown)
|
|
['{5102dacf-241b-11d3-aea7-006097b01411}']
|
|
(*** IDirectPlay8Peer methods ***)
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
|
|
function EnumServiceProviders(pguidServiceProvider, pguidApplication: PGUID;
|
|
pSPInfoBuffer: PDPNServiceProviderInfo; out pcbEnumData, pcReturned: DWORD;
|
|
dwFlags: DWORD): HResult; stdcall;
|
|
function CancelAsyncOperation(hAsyncHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function Connect(const pdnAppDesc: TDPNApplicationDesc;
|
|
pHostAddr: IDirectPlay8Address; pDeviceInfo: IDirectPlay8Address;
|
|
pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
|
|
pvUserConnectData: Pointer; dwUserConnectDataSize: DWORD;
|
|
pvPlayerContext, pvAsyncContext: Pointer;
|
|
phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function SendTo(dpnid: TDPNID; const prgBufferDesc: TDPNBufferDesc; cBufferDesc, dwTimeOut: DWORD;
|
|
pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetSendQueueInfo(dpnid: TDPNID; pdwNumMsgs, pdwNumBytes: PDWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function Host(const pdnAppDesc: TDPNApplicationDesc; prgpDeviceInfo: PIDirectPlay8Address;
|
|
cDeviceInfo: DWORD; pdnSecurity: PDPNSecurityDesc; pdnCredentials: PDPNSecurityCredentials;
|
|
pvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
|
|
function GetApplicationDesc(pAppDescBuffer: PDPNApplicationDesc; var pcbDataSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetApplicationDesc(const pad: TDPNApplicationDesc; dwFlags: DWORD): HResult; stdcall;
|
|
function CreateGroup(const pdpnGroupInfo: TDPNGroupInfo; pvGroupContext, 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: TDPNGroupInfo; pvAsyncContext: Pointer; phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetGroupInfo(dpnid: TDPNID; pdpnGroupInfo: PDPNGroupInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall; //todo: Changed
|
|
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: TDPNPlayerInfo; pvAsyncContext: Pointer;
|
|
phAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetPeerInfo(dpnid: TDPNID; var pdpnPlayerInfo: TDPNPlayerInfo; pdwSize: PDWORD; dwFlags: DWORD): HResult; stdcall; //todo: Changed
|
|
function GetPeerAddress(dpnid: TDPNID; out pAddress: IDirectPlay8Address; dwFlags: DWORD): HResult; stdcall;
|
|
function GetLocalHostAddresses(prgpAddress: PIDirectPlay8Address; var pcAddress: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function Close(dwFlags: DWORD): HResult; stdcall;
|
|
function EnumHosts(const pApplicationDesc: TDPNApplicationDesc;
|
|
pAddrHost, pDeviceInfo: IDirectPlay8Address; pUserEnumData: Pointer;
|
|
dwUserEnumDataSize, dwEnumCount, dwRetryInterval, dwTimeOut: DWORD;
|
|
pvUserContext: Pointer; pAsyncHandle: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function DestroyPeer(dpnidClient: TDPNID; pvDestroyData: Pointer; dwDestroyDataSize, dwFlags: DWORD): HResult; stdcall;
|
|
function ReturnBuffer(hBufferHandle: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function GetPlayerContext(dpnid: TDPNID; out ppvPlayerContext: Pointer; dwFlags: DWORD): HResult; stdcall;
|
|
function GetGroupContext(dpnid: TDPNID; out ppvGroupContext: Pointer; dwFlags: DWORD): HResult; stdcall;
|
|
function GetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
|
|
function SetCaps(pdpCaps: PDPNCaps; dwFlags: DWORD): HResult; stdcall; //Translator: pdpCaps can be either PDPNCaps or PDPNCapsEx
|
|
function SetSPCaps(const pguidSP: TGUID; const pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
|
|
function GetSPCaps(const pguidSP: TGUID; var pdpspCaps: TDPNSpCaps; dwFlags: DWORD): HResult; stdcall;
|
|
function GetConnectionInfo(dpnid: TDPNID; var pdpConnectionInfo: TDPNConnectionInfo; dwFlags: DWORD): HResult; stdcall;
|
|
function RegisterLobby(dpnHandle: TDPNHandle; pIDP8LobbiedApplication: IDirectPlay8LobbiedApplication; dwFlags: DWORD): HResult; stdcall;
|
|
function TerminateSession(pvTerminateData: Pointer; dwTerminateDataSize, dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
//
|
|
// COM definition for DirectPlay8 Thread Pool interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8ThreadPool);'}
|
|
{$EXTERNALSYM IDirectPlay8ThreadPool}
|
|
IDirectPlay8ThreadPool = interface(IUnknown)
|
|
['{0d22ee73-4a46-4a0d-89b2-045b4d666425}']
|
|
(*** IDirectPlay8ThreadPool methods ***)
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
|
|
function Close(dwFlags: DWORD): HResult; stdcall;
|
|
function GetThreadCount(dwProcessorNum: DWORD; out pdwNumThreads: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetThreadCount(dwProcessorNum: DWORD; dwNumThreads: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function DoWork(dwAllowedTimeSlice: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
//
|
|
// COM definition for DirectPlay8 NAT Resolver interface
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8NATResolver);'}
|
|
{$EXTERNALSYM IDirectPlay8NATResolver}
|
|
IDirectPlay8NATResolver = interface(IUnknown)
|
|
['{a9e213f2-9a60-486f-bf3b-53408b6d1cbb}']
|
|
(*** IDirectPlay8NATResolver methods ***)
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
|
|
function Start(ppDevices: PIDirectPlay8Address; dwNumDevices: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function Close(dwFlags: DWORD): HResult; stdcall;
|
|
function EnumDevices(pSPInfoBuffer: PDPNServiceProviderInfo; var pdwBufferSize: DWORD; out pdwNumDevices: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function GetAddresses(ppAddresses: PIDirectPlay8Address; out pdwNumAddresses: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Interface IIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {5102DACD-241B-11d3-AEA7-006097B01411}
|
|
IID_IDirectPlay8Client = IDirectPlay8Client;
|
|
{$EXTERNALSYM IID_IDirectPlay8Client}
|
|
|
|
// {5102DACE-241B-11d3-AEA7-006097B01411}
|
|
IID_IDirectPlay8Server = IDirectPlay8Server;
|
|
{$EXTERNALSYM IID_IDirectPlay8Server}
|
|
|
|
// {5102DACF-241B-11d3-AEA7-006097B01411}
|
|
IID_IDirectPlay8Peer = IDirectPlay8Peer;
|
|
{$EXTERNALSYM IID_IDirectPlay8Peer}
|
|
|
|
|
|
// IIDs added for DirectX 9
|
|
|
|
// {0D22EE73-4A46-4a0d-89B2-045B4D666425}
|
|
IID_IDirectPlay8ThreadPool = IDirectPlay8ThreadPool;
|
|
{$EXTERNALSYM IID_IDirectPlay8ThreadPool}
|
|
|
|
// {A9E213F2-9A60-486f-BF3B-53408B6D1CBB}
|
|
IID_IDirectPlay8NATResolver = IDirectPlay8NATResolver;
|
|
{$EXTERNALSYM IID_IDirectPlay8NATResolver}
|
|
|
|
|
|
|
|
(*==========================================================================
|
|
*
|
|
* Copyright (C) 2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: DPLobby.h
|
|
* Content: DirectPlay8 Lobby Include File
|
|
*
|
|
***************************************************************************)
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Lobby Structures (Non-Message)
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Information on a registered game
|
|
//
|
|
PDPLApplicationInfo = ^TDPLApplicationInfo;
|
|
_DPL_APPLICATION_INFO = packed record
|
|
guidApplication: TGUID; // GUID of the application
|
|
pwszApplicationName: PWideChar; // Name of the application
|
|
dwNumRunning: DWORD; // # of instances of this application running
|
|
dwNumWaiting: DWORD; // # of instances of this application waiting
|
|
dwFlags: DWORD; // Flags
|
|
end;
|
|
{$EXTERNALSYM _DPL_APPLICATION_INFO}
|
|
DPL_APPLICATION_INFO = _DPL_APPLICATION_INFO;
|
|
{$EXTERNALSYM DPL_APPLICATION_INFO}
|
|
TDPLApplicationInfo = _DPL_APPLICATION_INFO;
|
|
|
|
//
|
|
// Settings to be used for connecting / hosting a game session
|
|
//
|
|
PDPLConnectionSettings = ^TDPLConnectionSettings;
|
|
_DPL_CONNECTION_SETTINGS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Connection settings flags (DPLCONNECTSETTINGS_...)
|
|
dpnAppDesc: TDPNApplicationDesc; // Application desc for the associated DirectPlay session
|
|
pdp8HostAddress: IDirectPlay8Address; // Address of host to connect to
|
|
ppdp8DeviceAddresses: IDirectPlay8Address; // Address of device to connect from / host on
|
|
cNumDeviceAddresses: DWORD; // # of addresses specified in ppdp8DeviceAddresses
|
|
pwszPlayerName: PWideChar; // Name to give the player
|
|
end;
|
|
{$EXTERNALSYM _DPL_CONNECTION_SETTINGS}
|
|
DPL_CONNECTION_SETTINGS = _DPL_CONNECTION_SETTINGS;
|
|
{$EXTERNALSYM DPL_CONNECTION_SETTINGS}
|
|
TDPLConnectionSettings = _DPL_CONNECTION_SETTINGS;
|
|
|
|
//
|
|
// Information for performing a lobby connect
|
|
// (ConnectApplication)
|
|
//
|
|
PDPLConnectInfo = ^TDPLConnectInfo;
|
|
_DPL_CONNECT_INFO = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags (DPLCONNECT_...)
|
|
guidApplication: TGUID; // GUID of application to launch
|
|
pdplConnectionSettings: PDPLConnectionSettings; // Settings application should use
|
|
pvLobbyConnectData: Pointer; // User defined data block
|
|
dwLobbyConnectDataSize: DWORD; // Size of user defined data block
|
|
end;
|
|
{$EXTERNALSYM _DPL_CONNECT_INFO}
|
|
DPL_CONNECT_INFO = _DPL_CONNECT_INFO;
|
|
{$EXTERNALSYM DPL_CONNECT_INFO}
|
|
TDPLConnectInfo = _DPL_CONNECT_INFO;
|
|
|
|
//
|
|
// Information for registering an application
|
|
// (RegisterApplication)
|
|
//
|
|
PDPLProgramDesc = ^TDPLProgramDesc;
|
|
_DPL_PROGRAM_DESC = packed record
|
|
dwSize: DWORD;
|
|
dwFlags: DWORD;
|
|
guidApplication: TGUID; // Application GUID
|
|
pwszApplicationName: PWideChar; // Unicode application name
|
|
pwszCommandLine: PWideChar; // Unicode command line arguments
|
|
pwszCurrentDirectory: PWideChar; // Unicode current directory
|
|
pwszDescription: PWideChar; // Unicode application description
|
|
pwszExecutableFilename: PWideChar; // Unicode filename of application executable
|
|
pwszExecutablePath: PWideChar; // Unicode path of application executable
|
|
pwszLauncherFilename: PWideChar; // Unicode filename of launcher executable
|
|
pwszLauncherPath: PWideChar; // Unicode path of launcher executable
|
|
end;
|
|
{$EXTERNALSYM _DPL_PROGRAM_DESC}
|
|
DPL_PROGRAM_DESC = _DPL_PROGRAM_DESC;
|
|
{$EXTERNALSYM DPL_PROGRAM_DESC}
|
|
TDPLProgramDesc = _DPL_PROGRAM_DESC;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Lobby Message Structures
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// A connection was established
|
|
// (DPL_MSGID_CONNECT)
|
|
//
|
|
PDPLMessageConnect = ^TDPLMessageConnect;
|
|
_DPL_MESSAGE_CONNECT = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hConnectId: TDPNHandle; // Handle of new connection
|
|
pdplConnectionSettings: PDPLConnectionSettings; // Connection settings for this connection
|
|
pvLobbyConnectData: Pointer; // User defined lobby data block
|
|
dwLobbyConnectDataSize: DWORD; // Size of user defined lobby data block
|
|
pvConnectionContext: Pointer; // Context value for this connection (user set)
|
|
end;
|
|
{$EXTERNALSYM _DPL_MESSAGE_CONNECT}
|
|
DPL_MESSAGE_CONNECT = _DPL_MESSAGE_CONNECT;
|
|
{$EXTERNALSYM DPL_MESSAGE_CONNECT}
|
|
TDPLMessageConnect = _DPL_MESSAGE_CONNECT;
|
|
|
|
//
|
|
// Connection settings have been updated
|
|
// (DPL_MSGID_CONNECTION_SETTINGS)
|
|
//
|
|
PDPLMessageConnectionSettings = ^TDPLMessageConnectionSettings;
|
|
_DPL_MESSAGE_CONNECTION_SETTINGS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hSender: TDPNHandle; // Handle of the connection for these settings
|
|
pdplConnectionSettings: PDPLConnectionSettings; // Connection settings
|
|
pvConnectionContext: Pointer; // Context value for this connection
|
|
end;
|
|
{$EXTERNALSYM _DPL_MESSAGE_CONNECTION_SETTINGS}
|
|
DPL_MESSAGE_CONNECTION_SETTINGS = _DPL_MESSAGE_CONNECTION_SETTINGS;
|
|
{$EXTERNALSYM DPL_MESSAGE_CONNECTION_SETTINGS}
|
|
TDPLMessageConnectionSettings = _DPL_MESSAGE_CONNECTION_SETTINGS;
|
|
|
|
//
|
|
// A connection has been disconnected
|
|
// (DPL_MSGID_DISCONNECT)
|
|
//
|
|
PDPLMessageDisconnect = ^TDPLMessageDisconnect;
|
|
_DPL_MESSAGE_DISCONNECT = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hDisconnectId: TDPNHandle; // Handle of the connection that was terminated
|
|
hrReason: HRESULT; // Reason the connection was broken
|
|
pvConnectionContext: Pointer; // Context value for this connection
|
|
end;
|
|
{$EXTERNALSYM _DPL_MESSAGE_DISCONNECT}
|
|
DPL_MESSAGE_DISCONNECT = _DPL_MESSAGE_DISCONNECT;
|
|
{$EXTERNALSYM DPL_MESSAGE_DISCONNECT}
|
|
TDPLMessageDisconnect = _DPL_MESSAGE_DISCONNECT;
|
|
|
|
//
|
|
// Data was received through a connection
|
|
// (DPL_MSGID_RECEIVE)
|
|
//
|
|
PDPLMessageReceive = ^TDPLMessageReceive;
|
|
_DPL_MESSAGE_RECEIVE = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hSender: TDPNHandle; // Handle of the connection that is from
|
|
pBuffer: PByte; // Contents of the message
|
|
dwBufferSize: DWORD; // Size of the message context
|
|
pvConnectionContext: Pointer; // Context value for this connection
|
|
end;
|
|
{$EXTERNALSYM _DPL_MESSAGE_RECEIVE}
|
|
DPL_MESSAGE_RECEIVE = _DPL_MESSAGE_RECEIVE;
|
|
{$EXTERNALSYM DPL_MESSAGE_RECEIVE}
|
|
TDPLMessageReceive = _DPL_MESSAGE_RECEIVE;
|
|
|
|
//
|
|
// Current status of the associated connection
|
|
// (DPL_MSGID_SESSION_STATUS)
|
|
//
|
|
PDPLMessageSessionStatus = ^TDPLMessageSessionStatus;
|
|
_DPL_MESSAGE_SESSION_STATUS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hSender: TDPNHandle; // Handle of the connection that this is from
|
|
dwStatus: DWORD; // Status (DPLSESSION_...)
|
|
pvConnectionContext: Pointer; // Context value for this connection
|
|
end;
|
|
{$EXTERNALSYM _DPL_MESSAGE_SESSION_STATUS}
|
|
DPL_MESSAGE_SESSION_STATUS = _DPL_MESSAGE_SESSION_STATUS;
|
|
{$EXTERNALSYM DPL_MESSAGE_SESSION_STATUS}
|
|
TDPLMessageSessionStatus = _DPL_MESSAGE_SESSION_STATUS;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Lobby Create
|
|
*
|
|
****************************************************************************)
|
|
|
|
(*
|
|
* This function is no longer supported. It is recommended that CoCreateInstance be used to create
|
|
* DirectPlay8 lobby objects.
|
|
*
|
|
* extern HRESULT WINAPI DirectPlay8LobbyCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
|
|
*
|
|
*)
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Functions
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// COM definition for DirectPlayLobbyClient
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8LobbyClient);'}
|
|
{$EXTERNALSYM IDirectPlay8LobbyClient}
|
|
IDirectPlay8LobbyClient = interface(IUnknown)
|
|
['{819074a2-016c-11d3-ae14-006097b01411}']
|
|
// IDirectPlayLobbyClient methods
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; dwFlags: DWORD): HResult; stdcall;
|
|
function EnumLocalPrograms(pGuidApplication: PGUID; pEnumData: PByte; var pdwEnumData: DWORD; out pdwItems: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function ConnectApplication(const pdplConnectionInfo: PDPLConnectInfo;
|
|
pvConnectionContext: Pointer; hApplication: PDPNHandle; dwTimeOut, dwFlags: DWORD): HResult; stdcall;
|
|
function Send(hConnection: TDPNHandle; pBuffer: PByte; pBufferSize, dwFlags: DWORD): HResult; stdcall;
|
|
function ReleaseApplication(hConnection: TDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function Close(dwFlags: DWORD): HResult; stdcall;
|
|
function GetConnectionSettings(hConnection: TDPNHandle; pdplSessionInfo: PDPLConnectionSettings; var pdwInfoSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetConnectionSettings(hConnection: TDPNHandle; const pdplSessionInfo: TDPLConnectionSettings; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
//
|
|
// COM definition for DirectPlayLobbiedApplication
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlay8LobbiedApplication);'}
|
|
{$EXTERNALSYM IDirectPlay8LobbiedApplication}
|
|
IDirectPlay8LobbiedApplication = interface(IUnknown)
|
|
['{819074a3-016c-11d3-ae14-006097b01411}']
|
|
// IDirectPlayLobbiedApplication methods
|
|
function Initialize(pvUserContext: Pointer; pfn: TFNDPNMessageHandler; pdpnhConnection: PDPNHandle; dwFlags: DWORD): HResult; stdcall;
|
|
function RegisterProgram(const pdplProgramDesc: TDPLProgramDesc; dwFlags: DWORD): HResult; stdcall;
|
|
function UnRegisterProgram(const pguidApplication: TGUID; dwFlags: DWORD): HResult; stdcall;
|
|
function Send(hConnection: TDPNHandle; pBuffer: PByte; pBufferSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetAppAvailable(fAvailable: BOOL; dwFlags: DWORD): HResult; stdcall;
|
|
function UpdateStatus(hConnection: TDPNHandle; dwStatus, dwFlags: DWORD): HResult; stdcall;
|
|
function Close(dwFlags: DWORD): HResult; stdcall;
|
|
function GetConnectionSettings(hConnection: TDPNHandle; pdplSessionInfo: PDPLConnectionSettings; var pdwInfoSize: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetConnectionSettings(hConnection: TDPNHandle; const pdplSessionInfo: TDPLConnectionSettings; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
const
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Lobby CLSIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {667955AD-6B3B-43ca-B949-BC69B5BAFF7F}
|
|
CLSID_DirectPlay8LobbiedApplication: TGUID = '{667955ad-6b3b-43ca-b949-bc69b5baff7f}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8LobbiedApplication}
|
|
|
|
// {3B2B6775-70B6-45af-8DEA-A209C69559F3}
|
|
CLSID_DirectPlay8LobbyClient: TGUID = '{3b2b6775-70b6-45af-8dea-a209c69559f3}';
|
|
{$EXTERNALSYM CLSID_DirectPlay8LobbyClient}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Lobby Interface IIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
type
|
|
// {819074A3-016C-11d3-AE14-006097B01411}
|
|
IID_IDirectPlay8LobbiedApplication = IDirectPlay8LobbiedApplication;
|
|
{$EXTERNALSYM IID_IDirectPlay8LobbiedApplication}
|
|
|
|
// {819074A2-016C-11d3-AE14-006097B01411}
|
|
IID_IDirectPlay8LobbyClient = IDirectPlay8LobbyClient;
|
|
{$EXTERNALSYM IID_IDirectPlay8LobbyClient}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Lobby Message IDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
const
|
|
DPL_MSGID_LOBBY = $8000;
|
|
{$EXTERNALSYM DPL_MSGID_LOBBY}
|
|
DPL_MSGID_RECEIVE = ($0001 or DPL_MSGID_LOBBY);
|
|
{$EXTERNALSYM DPL_MSGID_RECEIVE}
|
|
DPL_MSGID_CONNECT = ($0002 or DPL_MSGID_LOBBY);
|
|
{$EXTERNALSYM DPL_MSGID_CONNECT}
|
|
DPL_MSGID_DISCONNECT = ($0003 or DPL_MSGID_LOBBY);
|
|
{$EXTERNALSYM DPL_MSGID_DISCONNECT}
|
|
DPL_MSGID_SESSION_STATUS = ($0004 or DPL_MSGID_LOBBY);
|
|
{$EXTERNALSYM DPL_MSGID_SESSION_STATUS}
|
|
DPL_MSGID_CONNECTION_SETTINGS = ($0005 or DPL_MSGID_LOBBY);
|
|
{$EXTERNALSYM DPL_MSGID_CONNECTION_SETTINGS}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8Lobby Constants
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Specifies that operation should be performed on all open connections
|
|
//
|
|
DPLHANDLE_ALLCONNECTIONS = $FFFFFFFF;
|
|
{$EXTERNALSYM DPLHANDLE_ALLCONNECTIONS}
|
|
|
|
//
|
|
// The associated game session has suceeded in connecting / hosting
|
|
//
|
|
DPLSESSION_CONNECTED = $0001;
|
|
{$EXTERNALSYM DPLSESSION_CONNECTED}
|
|
|
|
// The associated game session failed connecting / hosting
|
|
//
|
|
DPLSESSION_COULDNOTCONNECT = $0002;
|
|
{$EXTERNALSYM DPLSESSION_COULDNOTCONNECT}
|
|
|
|
//
|
|
// The associated game session has disconnected
|
|
//
|
|
DPLSESSION_DISCONNECTED = $0003;
|
|
{$EXTERNALSYM DPLSESSION_DISCONNECTED}
|
|
|
|
//
|
|
// The associated game session has terminated
|
|
//
|
|
DPLSESSION_TERMINATED = $0004;
|
|
{$EXTERNALSYM DPLSESSION_TERMINATED}
|
|
|
|
//
|
|
// The associated game session's host has migrated
|
|
//
|
|
DPLSESSION_HOSTMIGRATED = $0005;
|
|
{$EXTERNALSYM DPLSESSION_HOSTMIGRATED}
|
|
|
|
//
|
|
// The associated game session's host has migrated to the local client
|
|
//
|
|
DPLSESSION_HOSTMIGRATEDHERE = $0006;
|
|
{$EXTERNALSYM DPLSESSION_HOSTMIGRATEDHERE}
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Lobby Flags
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Do not automatically make the lobby app unavailable when a connection is established
|
|
//
|
|
DPLAVAILABLE_ALLOWMULTIPLECONNECT = $0001;
|
|
{$EXTERNALSYM DPLAVAILABLE_ALLOWMULTIPLECONNECT}
|
|
|
|
//
|
|
// Launch a new instance of the application to connect to
|
|
//
|
|
DPLCONNECT_LAUNCHNEW = $0001;
|
|
{$EXTERNALSYM DPLCONNECT_LAUNCHNEW}
|
|
|
|
//
|
|
// Launch a new instance of the application if one is not waiting
|
|
//
|
|
DPLCONNECT_LAUNCHNOTFOUND = $0002;
|
|
{$EXTERNALSYM DPLCONNECT_LAUNCHNOTFOUND}
|
|
|
|
//
|
|
// When starting the associated game session, start it as a host
|
|
//
|
|
DPLCONNECTSETTINGS_HOST = $0001;
|
|
{$EXTERNALSYM DPLCONNECTSETTINGS_HOST}
|
|
|
|
//
|
|
// Disable parameter validation
|
|
//
|
|
DPLINITIALIZE_DISABLEPARAMVAL = $0001;
|
|
{$EXTERNALSYM DPLINITIALIZE_DISABLEPARAMVAL}
|
|
|
|
|
|
|
|
|
|
|
|
///// Part 2 of dplay8.h /////
|
|
(*==========================================================================;
|
|
*
|
|
* Copyright (C) 1998-2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: DPlay8.h
|
|
* Content: DirectPlay8 include file
|
|
*
|
|
***************************************************************************)
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DIRECTPLAY8 ERRORS
|
|
*
|
|
* Errors are represented by negative values and cannot be combined.
|
|
*
|
|
****************************************************************************)
|
|
|
|
const
|
|
_DPN_FACILITY_CODE = $015;
|
|
{$EXTERNALSYM _DPN_FACILITY_CODE}
|
|
_DPNHRESULT_BASE = $8000;
|
|
{$EXTERNALSYM _DPNHRESULT_BASE}
|
|
|
|
MAKE_DPNHRESULT_R = (1 shl 31) or (_DPN_FACILITY_CODE shl 16) + _DPNHRESULT_BASE;
|
|
|
|
// #define MAKE_DPNHRESULT( code ) MAKE_HRESULT( 1, _DPN_FACILITY_CODE, ( code + _DPNHRESULT_BASE ) )
|
|
function MAKE_DPNHRESULT(Code: DWORD): DWORD;
|
|
{$EXTERNALSYM MAKE_DPNHRESULT}
|
|
|
|
const
|
|
DPN_OK = S_OK;
|
|
{$EXTERNALSYM DPN_OK}
|
|
|
|
DPNSUCCESS_EQUAL = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($5 + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x5 + _DPNHRESULT_BASE ) )
|
|
{$EXTERNALSYM DPNSUCCESS_EQUAL}
|
|
DPNSUCCESS_NOPLAYERSINGROUP = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($8 + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, ( 0x8 + _DPNHRESULT_BASE ) ) // added for DirectX 9
|
|
{$EXTERNALSYM DPNSUCCESS_NOPLAYERSINGROUP}
|
|
DPNSUCCESS_NOTEQUAL = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($A + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0A + _DPNHRESULT_BASE ) )
|
|
{$EXTERNALSYM DPNSUCCESS_NOTEQUAL}
|
|
DPNSUCCESS_PENDING = HRESULT((0 shl 31) or (_DPN_FACILITY_CODE shl 16) or ($e + _DPNHRESULT_BASE)); // MAKE_HRESULT( 0, _DPN_FACILITY_CODE, (0x0e + _DPNHRESULT_BASE ) )
|
|
{$EXTERNALSYM DPNSUCCESS_PENDING}
|
|
|
|
DPNERR_ABORTED = HRESULT(MAKE_DPNHRESULT_R + $30); // MAKE_DPNHRESULT( 0x30 )
|
|
{$EXTERNALSYM DPNERR_ABORTED}
|
|
DPNERR_ADDRESSING = HRESULT(MAKE_DPNHRESULT_R + $40); // MAKE_DPNHRESULT( 0x40 )
|
|
{$EXTERNALSYM DPNERR_ADDRESSING}
|
|
DPNERR_ALREADYCLOSING = HRESULT(MAKE_DPNHRESULT_R + $50); // MAKE_DPNHRESULT( 0x50 )
|
|
{$EXTERNALSYM DPNERR_ALREADYCLOSING}
|
|
DPNERR_ALREADYCONNECTED = HRESULT(MAKE_DPNHRESULT_R + $60); // MAKE_DPNHRESULT( 0x60 )
|
|
{$EXTERNALSYM DPNERR_ALREADYCONNECTED}
|
|
DPNERR_ALREADYDISCONNECTING = HRESULT(MAKE_DPNHRESULT_R + $70); // MAKE_DPNHRESULT( 0x70 )
|
|
{$EXTERNALSYM DPNERR_ALREADYDISCONNECTING}
|
|
DPNERR_ALREADYINITIALIZED = HRESULT(MAKE_DPNHRESULT_R + $80); // MAKE_DPNHRESULT( 0x80 )
|
|
{$EXTERNALSYM DPNERR_ALREADYINITIALIZED}
|
|
DPNERR_ALREADYREGISTERED = HRESULT(MAKE_DPNHRESULT_R + $90); // MAKE_DPNHRESULT( 0x90 )
|
|
{$EXTERNALSYM DPNERR_ALREADYREGISTERED}
|
|
DPNERR_BUFFERTOOSMALL = HRESULT(MAKE_DPNHRESULT_R + $100); // MAKE_DPNHRESULT( 0x100 )
|
|
{$EXTERNALSYM DPNERR_BUFFERTOOSMALL}
|
|
DPNERR_CANNOTCANCEL = HRESULT(MAKE_DPNHRESULT_R + $110); // MAKE_DPNHRESULT( 0x110 )
|
|
{$EXTERNALSYM DPNERR_CANNOTCANCEL}
|
|
DPNERR_CANTCREATEGROUP = HRESULT(MAKE_DPNHRESULT_R + $120); // MAKE_DPNHRESULT( 0x120 )
|
|
{$EXTERNALSYM DPNERR_CANTCREATEGROUP}
|
|
DPNERR_CANTCREATEPLAYER = HRESULT(MAKE_DPNHRESULT_R + $130); // MAKE_DPNHRESULT( 0x130 )
|
|
{$EXTERNALSYM DPNERR_CANTCREATEPLAYER}
|
|
DPNERR_CANTLAUNCHAPPLICATION = HRESULT(MAKE_DPNHRESULT_R + $140); // MAKE_DPNHRESULT( 0x140 )
|
|
{$EXTERNALSYM DPNERR_CANTLAUNCHAPPLICATION}
|
|
DPNERR_CONNECTING = HRESULT(MAKE_DPNHRESULT_R + $150); // MAKE_DPNHRESULT( 0x150 )
|
|
{$EXTERNALSYM DPNERR_CONNECTING}
|
|
DPNERR_CONNECTIONLOST = HRESULT(MAKE_DPNHRESULT_R + $160); // MAKE_DPNHRESULT( 0x160 )
|
|
{$EXTERNALSYM DPNERR_CONNECTIONLOST}
|
|
DPNERR_CONVERSION = HRESULT(MAKE_DPNHRESULT_R + $170); // MAKE_DPNHRESULT( 0x170 )
|
|
{$EXTERNALSYM DPNERR_CONVERSION}
|
|
DPNERR_DATATOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $175); // MAKE_DPNHRESULT( 0x175 )
|
|
{$EXTERNALSYM DPNERR_DATATOOLARGE}
|
|
DPNERR_DOESNOTEXIST = HRESULT(MAKE_DPNHRESULT_R + $180); // MAKE_DPNHRESULT( 0x180 )
|
|
{$EXTERNALSYM DPNERR_DOESNOTEXIST}
|
|
DPNERR_DPNSVRNOTAVAILABLE = HRESULT(MAKE_DPNHRESULT_R + $185); // MAKE_DPNHRESULT( 0x185 )
|
|
{$EXTERNALSYM DPNERR_DPNSVRNOTAVAILABLE}
|
|
DPNERR_DUPLICATECOMMAND = HRESULT(MAKE_DPNHRESULT_R + $190); // MAKE_DPNHRESULT( 0x190 )
|
|
{$EXTERNALSYM DPNERR_DUPLICATECOMMAND}
|
|
DPNERR_ENDPOINTNOTRECEIVING = HRESULT(MAKE_DPNHRESULT_R + $200); // MAKE_DPNHRESULT( 0x200 )
|
|
{$EXTERNALSYM DPNERR_ENDPOINTNOTRECEIVING}
|
|
DPNERR_ENUMQUERYTOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $210); // MAKE_DPNHRESULT( 0x210 )
|
|
{$EXTERNALSYM DPNERR_ENUMQUERYTOOLARGE}
|
|
DPNERR_ENUMRESPONSETOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $220); // MAKE_DPNHRESULT( 0x220 )
|
|
{$EXTERNALSYM DPNERR_ENUMRESPONSETOOLARGE}
|
|
DPNERR_EXCEPTION = HRESULT(MAKE_DPNHRESULT_R + $230); // MAKE_DPNHRESULT( 0x230 )
|
|
{$EXTERNALSYM DPNERR_EXCEPTION}
|
|
DPNERR_GENERIC = E_FAIL;
|
|
{$EXTERNALSYM DPNERR_GENERIC}
|
|
DPNERR_GROUPNOTEMPTY = HRESULT(MAKE_DPNHRESULT_R + $240); // MAKE_DPNHRESULT( 0x240 )
|
|
{$EXTERNALSYM DPNERR_GROUPNOTEMPTY}
|
|
DPNERR_HOSTING = HRESULT(MAKE_DPNHRESULT_R + $250); // MAKE_DPNHRESULT( 0x250 )
|
|
{$EXTERNALSYM DPNERR_HOSTING}
|
|
DPNERR_HOSTREJECTEDCONNECTION = HRESULT(MAKE_DPNHRESULT_R + $260); // MAKE_DPNHRESULT( 0x260 )
|
|
{$EXTERNALSYM DPNERR_HOSTREJECTEDCONNECTION}
|
|
DPNERR_HOSTTERMINATEDSESSION = HRESULT(MAKE_DPNHRESULT_R + $270); // MAKE_DPNHRESULT( 0x270 )
|
|
{$EXTERNALSYM DPNERR_HOSTTERMINATEDSESSION}
|
|
DPNERR_INCOMPLETEADDRESS = HRESULT(MAKE_DPNHRESULT_R + $280); // MAKE_DPNHRESULT( 0x280 )
|
|
{$EXTERNALSYM DPNERR_INCOMPLETEADDRESS}
|
|
DPNERR_INVALIDADDRESSFORMAT = HRESULT(MAKE_DPNHRESULT_R + $290); // MAKE_DPNHRESULT( 0x290 )
|
|
{$EXTERNALSYM DPNERR_INVALIDADDRESSFORMAT}
|
|
DPNERR_INVALIDAPPLICATION = HRESULT(MAKE_DPNHRESULT_R + $300); // MAKE_DPNHRESULT( 0x300 )
|
|
{$EXTERNALSYM DPNERR_INVALIDAPPLICATION}
|
|
DPNERR_INVALIDCOMMAND = HRESULT(MAKE_DPNHRESULT_R + $310); // MAKE_DPNHRESULT( 0x310 )
|
|
{$EXTERNALSYM DPNERR_INVALIDCOMMAND}
|
|
DPNERR_INVALIDDEVICEADDRESS = HRESULT(MAKE_DPNHRESULT_R + $320); // MAKE_DPNHRESULT( 0x320 )
|
|
{$EXTERNALSYM DPNERR_INVALIDDEVICEADDRESS}
|
|
DPNERR_INVALIDENDPOINT = HRESULT(MAKE_DPNHRESULT_R + $330); // MAKE_DPNHRESULT( 0x330 )
|
|
{$EXTERNALSYM DPNERR_INVALIDENDPOINT}
|
|
DPNERR_INVALIDFLAGS = HRESULT(MAKE_DPNHRESULT_R + $340); // MAKE_DPNHRESULT( 0x340 )
|
|
{$EXTERNALSYM DPNERR_INVALIDFLAGS}
|
|
DPNERR_INVALIDGROUP = HRESULT(MAKE_DPNHRESULT_R + $350); // MAKE_DPNHRESULT( 0x350 )
|
|
{$EXTERNALSYM DPNERR_INVALIDGROUP}
|
|
DPNERR_INVALIDHANDLE = HRESULT(MAKE_DPNHRESULT_R + $360); // MAKE_DPNHRESULT( 0x360 )
|
|
{$EXTERNALSYM DPNERR_INVALIDHANDLE}
|
|
DPNERR_INVALIDHOSTADDRESS = HRESULT(MAKE_DPNHRESULT_R + $370); // MAKE_DPNHRESULT( 0x370 )
|
|
{$EXTERNALSYM DPNERR_INVALIDHOSTADDRESS}
|
|
DPNERR_INVALIDINSTANCE = HRESULT(MAKE_DPNHRESULT_R + $380); // MAKE_DPNHRESULT( 0x380 )
|
|
{$EXTERNALSYM DPNERR_INVALIDINSTANCE}
|
|
DPNERR_INVALIDINTERFACE = HRESULT(MAKE_DPNHRESULT_R + $390); // MAKE_DPNHRESULT( 0x390 )
|
|
{$EXTERNALSYM DPNERR_INVALIDINTERFACE}
|
|
DPNERR_INVALIDOBJECT = HRESULT(MAKE_DPNHRESULT_R + $400); // MAKE_DPNHRESULT( 0x400 )
|
|
{$EXTERNALSYM DPNERR_INVALIDOBJECT}
|
|
DPNERR_INVALIDPARAM = E_INVALIDARG;
|
|
{$EXTERNALSYM DPNERR_INVALIDPARAM}
|
|
DPNERR_INVALIDPASSWORD = HRESULT(MAKE_DPNHRESULT_R + $410); // MAKE_DPNHRESULT( 0x410 )
|
|
{$EXTERNALSYM DPNERR_INVALIDPASSWORD}
|
|
DPNERR_INVALIDPLAYER = HRESULT(MAKE_DPNHRESULT_R + $420); // MAKE_DPNHRESULT( 0x420 )
|
|
{$EXTERNALSYM DPNERR_INVALIDPLAYER}
|
|
DPNERR_INVALIDPOINTER = E_POINTER;
|
|
{$EXTERNALSYM DPNERR_INVALIDPOINTER}
|
|
DPNERR_INVALIDPRIORITY = HRESULT(MAKE_DPNHRESULT_R + $430); // MAKE_DPNHRESULT( 0x430 )
|
|
{$EXTERNALSYM DPNERR_INVALIDPRIORITY}
|
|
DPNERR_INVALIDSTRING = HRESULT(MAKE_DPNHRESULT_R + $440); // MAKE_DPNHRESULT( 0x440 )
|
|
{$EXTERNALSYM DPNERR_INVALIDSTRING}
|
|
DPNERR_INVALIDURL = HRESULT(MAKE_DPNHRESULT_R + $450); // MAKE_DPNHRESULT( 0x450 )
|
|
{$EXTERNALSYM DPNERR_INVALIDURL}
|
|
DPNERR_INVALIDVERSION = HRESULT(MAKE_DPNHRESULT_R + $460); // MAKE_DPNHRESULT( 0x460 )
|
|
{$EXTERNALSYM DPNERR_INVALIDVERSION}
|
|
DPNERR_NOCAPS = HRESULT(MAKE_DPNHRESULT_R + $470); // MAKE_DPNHRESULT( 0x470 )
|
|
{$EXTERNALSYM DPNERR_NOCAPS}
|
|
DPNERR_NOCONNECTION = HRESULT(MAKE_DPNHRESULT_R + $480); // MAKE_DPNHRESULT( 0x480 )
|
|
{$EXTERNALSYM DPNERR_NOCONNECTION}
|
|
DPNERR_NOHOSTPLAYER = HRESULT(MAKE_DPNHRESULT_R + $490); // MAKE_DPNHRESULT( 0x490 )
|
|
{$EXTERNALSYM DPNERR_NOHOSTPLAYER}
|
|
DPNERR_NOINTERFACE = E_NOINTERFACE;
|
|
{$EXTERNALSYM DPNERR_NOINTERFACE}
|
|
DPNERR_NOMOREADDRESSCOMPONENTS = HRESULT(MAKE_DPNHRESULT_R + $500); // MAKE_DPNHRESULT( 0x500 )
|
|
{$EXTERNALSYM DPNERR_NOMOREADDRESSCOMPONENTS}
|
|
DPNERR_NORESPONSE = HRESULT(MAKE_DPNHRESULT_R + $510); // MAKE_DPNHRESULT( 0x510 )
|
|
{$EXTERNALSYM DPNERR_NORESPONSE}
|
|
DPNERR_NOTALLOWED = HRESULT(MAKE_DPNHRESULT_R + $520); // MAKE_DPNHRESULT( 0x520 )
|
|
{$EXTERNALSYM DPNERR_NOTALLOWED}
|
|
DPNERR_NOTHOST = HRESULT(MAKE_DPNHRESULT_R + $530); // MAKE_DPNHRESULT( 0x530 )
|
|
{$EXTERNALSYM DPNERR_NOTHOST}
|
|
DPNERR_NOTREADY = HRESULT(MAKE_DPNHRESULT_R + $540); // MAKE_DPNHRESULT( 0x540 )
|
|
{$EXTERNALSYM DPNERR_NOTREADY}
|
|
DPNERR_NOTREGISTERED = HRESULT(MAKE_DPNHRESULT_R + $550); // MAKE_DPNHRESULT( 0x550 )
|
|
{$EXTERNALSYM DPNERR_NOTREGISTERED}
|
|
DPNERR_OUTOFMEMORY = E_OUTOFMEMORY;
|
|
{$EXTERNALSYM DPNERR_OUTOFMEMORY}
|
|
DPNERR_PENDING = DPNSUCCESS_PENDING;
|
|
{$EXTERNALSYM DPNERR_PENDING}
|
|
DPNERR_PLAYERALREADYINGROUP = HRESULT(MAKE_DPNHRESULT_R + $560); // MAKE_DPNHRESULT( 0x560 )
|
|
{$EXTERNALSYM DPNERR_PLAYERALREADYINGROUP}
|
|
DPNERR_PLAYERLOST = HRESULT(MAKE_DPNHRESULT_R + $570); // MAKE_DPNHRESULT( 0x570 )
|
|
{$EXTERNALSYM DPNERR_PLAYERLOST}
|
|
DPNERR_PLAYERNOTINGROUP = HRESULT(MAKE_DPNHRESULT_R + $580); // MAKE_DPNHRESULT( 0x580 )
|
|
{$EXTERNALSYM DPNERR_PLAYERNOTINGROUP}
|
|
DPNERR_PLAYERNOTREACHABLE = HRESULT(MAKE_DPNHRESULT_R + $590); // MAKE_DPNHRESULT( 0x590 )
|
|
{$EXTERNALSYM DPNERR_PLAYERNOTREACHABLE}
|
|
DPNERR_SENDTOOLARGE = HRESULT(MAKE_DPNHRESULT_R + $600); // MAKE_DPNHRESULT( 0x600 )
|
|
{$EXTERNALSYM DPNERR_SENDTOOLARGE}
|
|
DPNERR_SESSIONFULL = HRESULT(MAKE_DPNHRESULT_R + $610); // MAKE_DPNHRESULT( 0x610 )
|
|
{$EXTERNALSYM DPNERR_SESSIONFULL}
|
|
DPNERR_TABLEFULL = HRESULT(MAKE_DPNHRESULT_R + $620); // MAKE_DPNHRESULT( 0x620 )
|
|
{$EXTERNALSYM DPNERR_TABLEFULL}
|
|
DPNERR_TIMEDOUT = HRESULT(MAKE_DPNHRESULT_R + $630); // MAKE_DPNHRESULT( 0x630 )
|
|
{$EXTERNALSYM DPNERR_TIMEDOUT}
|
|
DPNERR_UNINITIALIZED = HRESULT(MAKE_DPNHRESULT_R + $640); // MAKE_DPNHRESULT( 0x640 )
|
|
{$EXTERNALSYM DPNERR_UNINITIALIZED}
|
|
DPNERR_UNSUPPORTED = E_NOTIMPL;
|
|
{$EXTERNALSYM DPNERR_UNSUPPORTED}
|
|
DPNERR_USERCANCEL = HRESULT(MAKE_DPNHRESULT_R + $650); // MAKE_DPNHRESULT( 0x650 )
|
|
{$EXTERNALSYM DPNERR_USERCANCEL}
|
|
|
|
|
|
|
|
|
|
(*==========================================================================;
|
|
*
|
|
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: dpvoice.h
|
|
* Content: DirectPlayVoice include file
|
|
***************************************************************************)
|
|
|
|
|
|
const
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice CLSIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
|
|
// {B9F3EB85-B781-4ac1-8D90-93A05EE37D7D}
|
|
CLSID_DirectPlayVoiceClient: TGUID = '{b9f3eb85-b781-4ac1-8d90-93a05ee37d7d}';
|
|
{$EXTERNALSYM CLSID_DirectPlayVoiceClient}
|
|
|
|
// {D3F5B8E6-9B78-4a4c-94EA-CA2397B663D3}
|
|
CLSID_DirectPlayVoiceServer: TGUID = '{d3f5b8e6-9b78-4a4c-94ea-ca2397b663d3}';
|
|
{$EXTERNALSYM CLSID_DirectPlayVoiceServer}
|
|
|
|
// {0F0F094B-B01C-4091-A14D-DD0CD807711A}
|
|
CLSID_DirectPlayVoiceTest: TGUID = '{0f0f094b-b01c-4091-a14d-dd0cd807711a}';
|
|
{$EXTERNALSYM CLSID_DirectPlayVoiceTest}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Compression Type GUIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// MS-ADPCM 32.8 kbit/s
|
|
//
|
|
// {699B52C1-A885-46a8-A308-97172419ADC7}
|
|
DPVCTGUID_ADPCM: TGUID = '{699b52c1-a885-46a8-a308-97172419adc7}';
|
|
{$EXTERNALSYM DPVCTGUID_ADPCM}
|
|
|
|
// Microsoft GSM 6.10 13 kbit/s
|
|
//
|
|
// {24768C60-5A0D-11d3-9BE4-525400D985E7}
|
|
DPVCTGUID_GSM: TGUID = '{24768c60-5a0d-11d3-9be4-525400d985e7}';
|
|
{$EXTERNALSYM DPVCTGUID_GSM}
|
|
|
|
// MS-PCM 64 kbit/s
|
|
//
|
|
// {8DE12FD4-7CB3-48ce-A7E8-9C47A22E8AC5}
|
|
DPVCTGUID_NONE: TGUID = '{8de12fd4-7cb3-48ce-a7e8-9c47a22e8ac5}';
|
|
{$EXTERNALSYM DPVCTGUID_NONE}
|
|
|
|
// Voxware SC03 3.2kbit/s
|
|
//
|
|
// {7D82A29B-2242-4f82-8F39-5D1153DF3E41}
|
|
DPVCTGUID_SC03: TGUID = '{7d82a29b-2242-4f82-8f39-5d1153df3e41}';
|
|
{$EXTERNALSYM DPVCTGUID_SC03}
|
|
|
|
// Voxware SC06 6.4kbit/s
|
|
//
|
|
// {53DEF900-7168-4633-B47F-D143916A13C7}
|
|
DPVCTGUID_SC06: TGUID = '{53def900-7168-4633-b47f-d143916a13c7}';
|
|
{$EXTERNALSYM DPVCTGUID_SC06}
|
|
|
|
// TrueSpeech(TM) 8.6 kbit/s
|
|
//
|
|
// {D7954361-5A0B-11d3-9BE4-525400D985E7}
|
|
DPVCTGUID_TRUESPEECH: TGUID = '{d7954361-5a0b-11d3-9be4-525400d985e7}';
|
|
{$EXTERNALSYM DPVCTGUID_TRUESPEECH}
|
|
|
|
// Voxware VR12 1.4kbit/s
|
|
//
|
|
// {FE44A9FE-8ED4-48bf-9D66-1B1ADFF9FF6D}
|
|
DPVCTGUID_VR12: TGUID = '{fe44a9fe-8ed4-48bf-9d66-1b1adff9ff6d}';
|
|
{$EXTERNALSYM DPVCTGUID_VR12}
|
|
|
|
// Define the default compression type
|
|
DPVCTGUID_DEFAULT: TGUID = '{7d82a29b-2242-4f82-8f39-5d1153df3e41}'; // DPVCTGUID_SC03;
|
|
{$EXTERNALSYM DPVCTGUID_DEFAULT}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Callback Functions
|
|
*
|
|
****************************************************************************)
|
|
|
|
type
|
|
TDVMessageHandler = function(pvUserContext: Pointer; dwMessageType: DWORD; lpMessage: Pointer): HResult; stdcall;
|
|
{$NODEFINE TDVMessageHandler}
|
|
{$HPPEMIT 'typedef PDVMESSAGEHANDLER TDVMessageHandler;'}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Datatypes (Non-Structure / Non-Message)
|
|
*
|
|
****************************************************************************)
|
|
|
|
PDVID = ^DVID;
|
|
DVID = DWORD;
|
|
{$EXTERNALSYM DVID}
|
|
TDVID = DVID;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Message Types
|
|
*
|
|
****************************************************************************)
|
|
|
|
const
|
|
DVMSGID_BASE = $0000;
|
|
{$EXTERNALSYM DVMSGID_BASE}
|
|
|
|
DVMSGID_CREATEVOICEPLAYER = (DVMSGID_BASE+$0001);
|
|
{$EXTERNALSYM DVMSGID_CREATEVOICEPLAYER}
|
|
DVMSGID_DELETEVOICEPLAYER = (DVMSGID_BASE+$0002);
|
|
{$EXTERNALSYM DVMSGID_DELETEVOICEPLAYER}
|
|
DVMSGID_SESSIONLOST = (DVMSGID_BASE+$0003);
|
|
{$EXTERNALSYM DVMSGID_SESSIONLOST}
|
|
DVMSGID_PLAYERVOICESTART = (DVMSGID_BASE+$0004);
|
|
{$EXTERNALSYM DVMSGID_PLAYERVOICESTART}
|
|
DVMSGID_PLAYERVOICESTOP = (DVMSGID_BASE+$0005);
|
|
{$EXTERNALSYM DVMSGID_PLAYERVOICESTOP}
|
|
DVMSGID_RECORDSTART = (DVMSGID_BASE+$0006);
|
|
{$EXTERNALSYM DVMSGID_RECORDSTART}
|
|
DVMSGID_RECORDSTOP = (DVMSGID_BASE+$0007);
|
|
{$EXTERNALSYM DVMSGID_RECORDSTOP}
|
|
DVMSGID_CONNECTRESULT = (DVMSGID_BASE+$0008);
|
|
{$EXTERNALSYM DVMSGID_CONNECTRESULT}
|
|
DVMSGID_DISCONNECTRESULT = (DVMSGID_BASE+$0009);
|
|
{$EXTERNALSYM DVMSGID_DISCONNECTRESULT}
|
|
DVMSGID_INPUTLEVEL = (DVMSGID_BASE+$000A);
|
|
{$EXTERNALSYM DVMSGID_INPUTLEVEL}
|
|
DVMSGID_OUTPUTLEVEL = (DVMSGID_BASE+$000B);
|
|
{$EXTERNALSYM DVMSGID_OUTPUTLEVEL}
|
|
DVMSGID_HOSTMIGRATED = (DVMSGID_BASE+$000C);
|
|
{$EXTERNALSYM DVMSGID_HOSTMIGRATED}
|
|
DVMSGID_SETTARGETS = (DVMSGID_BASE+$000D);
|
|
{$EXTERNALSYM DVMSGID_SETTARGETS}
|
|
DVMSGID_PLAYEROUTPUTLEVEL = (DVMSGID_BASE+$000E);
|
|
{$EXTERNALSYM DVMSGID_PLAYEROUTPUTLEVEL}
|
|
DVMSGID_LOSTFOCUS = (DVMSGID_BASE+$0010);
|
|
{$EXTERNALSYM DVMSGID_LOSTFOCUS}
|
|
DVMSGID_GAINFOCUS = (DVMSGID_BASE+$0011);
|
|
{$EXTERNALSYM DVMSGID_GAINFOCUS}
|
|
DVMSGID_LOCALHOSTSETUP = (DVMSGID_BASE+$0012);
|
|
{$EXTERNALSYM DVMSGID_LOCALHOSTSETUP}
|
|
DVMSGID_MAXBASE = (DVMSGID_LOCALHOSTSETUP);
|
|
{$EXTERNALSYM DVMSGID_MAXBASE}
|
|
DVMSGID_MINBASE = (DVMSGID_CREATEVOICEPLAYER);
|
|
{$EXTERNALSYM DVMSGID_MINBASE}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Constants
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Buffer Aggresiveness Value Ranges
|
|
//
|
|
DVBUFFERAGGRESSIVENESS_MIN = $00000001;
|
|
{$EXTERNALSYM DVBUFFERAGGRESSIVENESS_MIN}
|
|
DVBUFFERAGGRESSIVENESS_MAX = $00000064;
|
|
{$EXTERNALSYM DVBUFFERAGGRESSIVENESS_MAX}
|
|
DVBUFFERAGGRESSIVENESS_DEFAULT = $00000000;
|
|
{$EXTERNALSYM DVBUFFERAGGRESSIVENESS_DEFAULT}
|
|
|
|
//
|
|
// Buffer Quality Value Ranges
|
|
//
|
|
DVBUFFERQUALITY_MIN = $00000001;
|
|
{$EXTERNALSYM DVBUFFERQUALITY_MIN}
|
|
DVBUFFERQUALITY_MAX = $00000064;
|
|
{$EXTERNALSYM DVBUFFERQUALITY_MAX}
|
|
DVBUFFERQUALITY_DEFAULT = $00000000;
|
|
{$EXTERNALSYM DVBUFFERQUALITY_DEFAULT}
|
|
|
|
DVID_SYS = 0;
|
|
{$EXTERNALSYM DVID_SYS}
|
|
|
|
//
|
|
// Used to identify the session host in client/server
|
|
//
|
|
DVID_SERVERPLAYER = 1;
|
|
{$EXTERNALSYM DVID_SERVERPLAYER}
|
|
|
|
//
|
|
// Used to target all players
|
|
//
|
|
DVID_ALLPLAYERS = 0;
|
|
{$EXTERNALSYM DVID_ALLPLAYERS}
|
|
|
|
//
|
|
// Used to identify the main buffer
|
|
//
|
|
DVID_REMAINING = $FFFFFFFF;
|
|
{$EXTERNALSYM DVID_REMAINING}
|
|
|
|
//
|
|
// Input level range
|
|
//
|
|
DVINPUTLEVEL_MIN = $00000000;
|
|
{$EXTERNALSYM DVINPUTLEVEL_MIN}
|
|
DVINPUTLEVEL_MAX = $00000063; // 99 decimal
|
|
{$EXTERNALSYM DVINPUTLEVEL_MAX}
|
|
|
|
DVNOTIFYPERIOD_MINPERIOD = 20;
|
|
{$EXTERNALSYM DVNOTIFYPERIOD_MINPERIOD}
|
|
|
|
|
|
DVPLAYBACKVOLUME_DEFAULT = DSBVOLUME_MAX;
|
|
{$EXTERNALSYM DVPLAYBACKVOLUME_DEFAULT}
|
|
|
|
DVRECORDVOLUME_LAST = $00000001;
|
|
{$EXTERNALSYM DVRECORDVOLUME_LAST}
|
|
|
|
|
|
//
|
|
// Use the default value
|
|
//
|
|
DVTHRESHOLD_DEFAULT = $FFFFFFFF;
|
|
{$EXTERNALSYM DVTHRESHOLD_DEFAULT}
|
|
|
|
//
|
|
// Threshold Ranges
|
|
//
|
|
DVTHRESHOLD_MIN = $00000000;
|
|
{$EXTERNALSYM DVTHRESHOLD_MIN}
|
|
DVTHRESHOLD_MAX = $00000063; // 99 decimal
|
|
{$EXTERNALSYM DVTHRESHOLD_MAX}
|
|
|
|
//
|
|
// Threshold field is not used
|
|
//
|
|
DVTHRESHOLD_UNUSED = $FFFFFFFE;
|
|
{$EXTERNALSYM DVTHRESHOLD_UNUSED}
|
|
|
|
//
|
|
// Session Types
|
|
//
|
|
DVSESSIONTYPE_PEER = $00000001;
|
|
{$EXTERNALSYM DVSESSIONTYPE_PEER}
|
|
DVSESSIONTYPE_MIXING = $00000002;
|
|
{$EXTERNALSYM DVSESSIONTYPE_MIXING}
|
|
DVSESSIONTYPE_FORWARDING = $00000003;
|
|
{$EXTERNALSYM DVSESSIONTYPE_FORWARDING}
|
|
DVSESSIONTYPE_ECHO = $00000004;
|
|
{$EXTERNALSYM DVSESSIONTYPE_ECHO}
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Flags
|
|
*
|
|
****************************************************************************)
|
|
|
|
|
|
//
|
|
// Enable automatic adjustment of the recording volume
|
|
//
|
|
DVCLIENTCONFIG_AUTORECORDVOLUME = $00000008;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_AUTORECORDVOLUME}
|
|
|
|
//
|
|
// Enable automatic voice activation
|
|
//
|
|
DVCLIENTCONFIG_AUTOVOICEACTIVATED = $00000020;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_AUTOVOICEACTIVATED}
|
|
|
|
//
|
|
// Enable echo suppression
|
|
//
|
|
DVCLIENTCONFIG_ECHOSUPPRESSION = $08000000;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_ECHOSUPPRESSION}
|
|
|
|
//
|
|
// Voice Activation manual mode
|
|
//
|
|
DVCLIENTCONFIG_MANUALVOICEACTIVATED = $00000004;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_MANUALVOICEACTIVATED}
|
|
|
|
//
|
|
// Only playback voices that have buffers created for them
|
|
//
|
|
DVCLIENTCONFIG_MUTEGLOBAL = $00000010;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_MUTEGLOBAL}
|
|
|
|
//
|
|
// Mute the playback
|
|
//
|
|
DVCLIENTCONFIG_PLAYBACKMUTE = $00000002;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_PLAYBACKMUTE}
|
|
|
|
//
|
|
// Mute the recording
|
|
//
|
|
DVCLIENTCONFIG_RECORDMUTE = $00000001;
|
|
{$EXTERNALSYM DVCLIENTCONFIG_RECORDMUTE}
|
|
|
|
//
|
|
// Complete the operation before returning
|
|
//
|
|
DVFLAGS_SYNC = $00000001;
|
|
{$EXTERNALSYM DVFLAGS_SYNC}
|
|
|
|
//
|
|
// Just check to see if wizard has been run, and if so what it's results were
|
|
//
|
|
DVFLAGS_QUERYONLY = $00000002;
|
|
{$EXTERNALSYM DVFLAGS_QUERYONLY}
|
|
|
|
//
|
|
// Shutdown the voice session without migrating the host
|
|
//
|
|
DVFLAGS_NOHOSTMIGRATE = $00000008;
|
|
{$EXTERNALSYM DVFLAGS_NOHOSTMIGRATE}
|
|
|
|
//
|
|
// Allow the back button to be enabled in the wizard
|
|
//
|
|
DVFLAGS_ALLOWBACK = $00000010;
|
|
{$EXTERNALSYM DVFLAGS_ALLOWBACK}
|
|
|
|
//
|
|
// Disable host migration in the voice session
|
|
//
|
|
DVSESSION_NOHOSTMIGRATION = $00000001;
|
|
{$EXTERNALSYM DVSESSION_NOHOSTMIGRATION}
|
|
|
|
//
|
|
// Server controlled targetting
|
|
//
|
|
DVSESSION_SERVERCONTROLTARGET = $00000002;
|
|
{$EXTERNALSYM DVSESSION_SERVERCONTROLTARGET}
|
|
|
|
//
|
|
// Use DirectSound Normal Mode instead of priority
|
|
//
|
|
DVSOUNDCONFIG_NORMALMODE = $00000001;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_NORMALMODE}
|
|
|
|
//
|
|
// Automatically select the microphone
|
|
//
|
|
DVSOUNDCONFIG_AUTOSELECT = $00000002;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_AUTOSELECT}
|
|
|
|
//
|
|
// Run in half duplex mode
|
|
//
|
|
DVSOUNDCONFIG_HALFDUPLEX = $00000004;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_HALFDUPLEX}
|
|
|
|
//
|
|
// No volume controls are available for the recording device
|
|
//
|
|
DVSOUNDCONFIG_NORECVOLAVAILABLE = $00000010;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_NORECVOLAVAILABLE}
|
|
|
|
//
|
|
// Disable capture sharing
|
|
//
|
|
DVSOUNDCONFIG_NOFOCUS = $20000000;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_NOFOCUS}
|
|
|
|
//
|
|
// Set system conversion quality to high
|
|
//
|
|
DVSOUNDCONFIG_SETCONVERSIONQUALITY = $00000008;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_SETCONVERSIONQUALITY}
|
|
|
|
//
|
|
// Enable strict focus mode
|
|
//
|
|
DVSOUNDCONFIG_STRICTFOCUS = $40000000;
|
|
{$EXTERNALSYM DVSOUNDCONFIG_STRICTFOCUS}
|
|
|
|
//
|
|
// Player is in half duplex mode
|
|
//
|
|
DVPLAYERCAPS_HALFDUPLEX = $00000001;
|
|
{$EXTERNALSYM DVPLAYERCAPS_HALFDUPLEX}
|
|
|
|
//
|
|
// Specifies that player is the local player
|
|
//
|
|
DVPLAYERCAPS_LOCAL = $00000002;
|
|
{$EXTERNALSYM DVPLAYERCAPS_LOCAL}
|
|
|
|
|
|
type
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Interface Pointer definitions
|
|
*
|
|
****************************************************************************)
|
|
|
|
IDirectPlayVoiceServer = interface;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Structures (Non-Message)
|
|
*
|
|
****************************************************************************)
|
|
|
|
|
|
//
|
|
// DirectPlayVoice Caps
|
|
// (GetCaps / SetCaps)
|
|
//
|
|
PDVCaps = ^TDVCaps;
|
|
DVCAPS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Caps flags
|
|
end;
|
|
{$EXTERNALSYM DVCAPS}
|
|
TDVCaps = DVCAPS;
|
|
|
|
//
|
|
// DirectPlayVoice Client Configuration
|
|
// (Connect / GetClientConfig)
|
|
//
|
|
PDVClientConfig = ^TDVClientConfig;
|
|
DVCLIENTCONFIG = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags for client config (DVCLIENTCONFIG_...)
|
|
lRecordVolume: Longint; // Recording volume
|
|
lPlaybackVolume: Longint; // Playback volume
|
|
dwThreshold: DWORD; // Voice Activation Threshold
|
|
dwBufferQuality: DWORD; // Buffer quality
|
|
dwBufferAggressiveness: DWORD; // Buffer aggressiveness
|
|
dwNotifyPeriod: DWORD; // Period of notification messages (ms)
|
|
end;
|
|
{$EXTERNALSYM DVCLIENTCONFIG}
|
|
TDVClientConfig = DVCLIENTCONFIG;
|
|
|
|
//
|
|
// DirectPlayVoice Compression Type Information
|
|
// (GetCompressionTypes)
|
|
//
|
|
PDVCompressionInfo = ^TDVCompressionInfo;
|
|
DVCOMPRESSIONINFO = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
guidType: TGUID; // GUID that identifies this compression type
|
|
lpszName: PWideChar; // String name of this compression type
|
|
lpszDescription: PWideChar; // Description for this compression type
|
|
dwFlags: DWORD; // Flags for this compression type
|
|
dwMaxBitsPerSecond: DWORD; // Maximum # of bit/s this compression type uses
|
|
end;
|
|
{$EXTERNALSYM DVCOMPRESSIONINFO}
|
|
TDVCompressionInfo = DVCOMPRESSIONINFO;
|
|
|
|
//
|
|
// DirectPlayVoice Session Description
|
|
// (Host / GetSessionDesc)
|
|
//
|
|
PDVSessionDesc = ^TDVSessionDesc;
|
|
DVSESSIONDESC = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Session flags (DVSESSION_...)
|
|
dwSessionType: DWORD; // Session type (DVSESSIONTYPE_...)
|
|
guidCT: TGUID; // Compression Type to use
|
|
dwBufferQuality: DWORD; // Buffer quality
|
|
dwBufferAggressiveness: DWORD; // Buffer aggresiveness
|
|
end;
|
|
{$EXTERNALSYM DVSESSIONDESC}
|
|
TDVSessionDesc = DVSESSIONDESC;
|
|
|
|
//
|
|
// DirectPlayVoice Client Sound Device Configuration
|
|
// (Connect / GetSoundDeviceConfig)
|
|
//
|
|
PDVSoundDeviceConfig = ^TDVSoundDeviceConfig;
|
|
DVSOUNDDEVICECONFIG = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwFlags: DWORD; // Flags for sound config (DVSOUNDCONFIG_...)
|
|
guidPlaybackDevice: TGUID; // GUID of the playback device to use
|
|
lpdsPlaybackDevice: IDirectSound; // DirectSound Object to use (optional)
|
|
guidCaptureDevice: TGUID; // GUID of the capture device to use
|
|
lpdsCaptureDevice: IDirectSoundCapture; // DirectSoundCapture Object to use (optional)
|
|
hwndAppWindow: HWND; // HWND of your application's top-level window
|
|
lpdsMainBuffer: IDirectSoundBuffer; // DirectSoundBuffer to use for playback (optional)
|
|
dwMainBufferFlags: DWORD; // Flags to pass to Play() on the main buffer
|
|
dwMainBufferPriority: DWORD; // Priority to set when calling Play() on the main buffer
|
|
end;
|
|
{$EXTERNALSYM DVSOUNDDEVICECONFIG}
|
|
TDVSoundDeviceConfig = DVSOUNDDEVICECONFIG;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice message handler call back structures
|
|
*
|
|
****************************************************************************)
|
|
|
|
//
|
|
// Result of the Connect() call. (If it wasn't called Async)
|
|
// (DVMSGID_CONNECTRESULT)
|
|
//
|
|
PDVMsgConnectResult = ^TDVMsgConnectResult;
|
|
DVMSG_CONNECTRESULT = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hrResult: HRESULT; // Result of the Connect() call
|
|
end;
|
|
{$EXTERNALSYM DVMSG_CONNECTRESULT}
|
|
TDVMsgConnectResult = DVMSG_CONNECTRESULT;
|
|
|
|
//
|
|
// A new player has entered the voice session
|
|
// (DVMSGID_CREATEVOICEPLAYER)
|
|
//
|
|
PDVMsgCreateVoicePlayer = ^TDVMsgCreateVoicePlayer;
|
|
DVMSG_CREATEVOICEPLAYER = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dvidPlayer: TDVID; // DVID of the player who joined
|
|
dwFlags: DWORD; // Player flags (DVPLAYERCAPS_...)
|
|
pvPlayerContext: Pointer; // Context value for this player (user set)
|
|
end;
|
|
{$EXTERNALSYM DVMSG_CREATEVOICEPLAYER}
|
|
TDVMsgCreateVoicePlayer = DVMSG_CREATEVOICEPLAYER;
|
|
|
|
//
|
|
// A player has left the voice session
|
|
// (DVMSGID_DELETEVOICEPLAYER)
|
|
//
|
|
PDVMsgDeleteVoicePlayer = ^TDVMsgDeleteVoicePlayer;
|
|
DVMSG_DELETEVOICEPLAYER = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dvidPlayer: TDVID; // DVID of the player who left
|
|
pvPlayerContext: Pointer; // Context value for the player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_DELETEVOICEPLAYER}
|
|
TDVMsgDeleteVoicePlayer = DVMSG_DELETEVOICEPLAYER;
|
|
|
|
//
|
|
// Result of the Disconnect() call. (If it wasn't called Async)
|
|
// (DVMSGID_DISCONNECTRESULT)
|
|
//
|
|
PDVMsgDisconnectResult = ^TDVMsgDisconnectResult;
|
|
DVMSG_DISCONNECTRESULT = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hrResult: HRESULT; // Result of the Disconnect() call
|
|
end;
|
|
{$EXTERNALSYM DVMSG_DISCONNECTRESULT}
|
|
TDVMsgDisconnectResult = DVMSG_DISCONNECTRESULT;
|
|
|
|
//
|
|
// The voice session host has migrated.
|
|
// (DVMSGID_HOSTMIGRATED)
|
|
//
|
|
PDVMsgHostMigrated = ^TDVMsgHostMigrated;
|
|
DVMSG_HOSTMIGRATED = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dvidNewHostID: TDVID; // DVID of the player who is now the host
|
|
pdvServerInterface: IDirectPlayVoiceServer; // Pointer to the new host object (if local player is now host)
|
|
end;
|
|
{$EXTERNALSYM DVMSG_HOSTMIGRATED}
|
|
TDVMsgHostMigrated = DVMSG_HOSTMIGRATED;
|
|
|
|
//
|
|
// The current input level / recording volume on the local machine
|
|
// (DVMSGID_INPUTLEVEL)
|
|
//
|
|
PDVMsgInputlevel = ^TDVMsgInputlevel;
|
|
DVMSG_INPUTLEVEL = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwPeakLevel: DWORD; // Current peak level of the audio
|
|
lRecordVolume: Longint; // Current recording volume
|
|
pvLocalPlayerContext: Pointer; // Context value for the local player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_INPUTLEVEL}
|
|
TDVMsgInputlevel = DVMSG_INPUTLEVEL;
|
|
|
|
//
|
|
// The local client is about to become the new host
|
|
// (DVMSGID_LOCALHOSTSETUP)
|
|
//
|
|
PDVMsgLocalHostSetup = ^TDVMsgLocalHostSetup;
|
|
DVMSG_LOCALHOSTSETUP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
pvContext: Pointer; // Context value to be passed to Initialize() of new host object
|
|
pMessageHandler: TDVMessageHandler; // Message handler to be used by new host object
|
|
end;
|
|
{$EXTERNALSYM DVMSG_LOCALHOSTSETUP}
|
|
TDVMsgLocalHostSetup = DVMSG_LOCALHOSTSETUP;
|
|
|
|
//
|
|
// The current output level for the combined output of all incoming streams.
|
|
// (DVMSGID_OUTPUTLEVEL)
|
|
//
|
|
PDVMsgOutputLevel = ^TDVMsgOutputLevel;
|
|
DVMSG_OUTPUTLEVEL = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwPeakLevel: DWORD; // Current peak level of the output
|
|
lOutputVolume: Longint; // Current playback volume
|
|
pvLocalPlayerContext: Pointer; // Context value for the local player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_OUTPUTLEVEL}
|
|
TDVMsgOutputLevel = DVMSG_OUTPUTLEVEL;
|
|
|
|
//
|
|
// The current peak level of an individual player's incoming audio stream as it is
|
|
// being played back.
|
|
// (DVMSGID_PLAYEROUTPUTLEVEL)
|
|
//
|
|
PDVMsgPlayerOutputLevel = ^TDVMsgPlayerOutputLevel;
|
|
DVMSG_PLAYEROUTPUTLEVEL = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dvidSourcePlayerID: TDVID; // DVID of the player
|
|
dwPeakLevel: DWORD; // Peak level of the player's stream
|
|
pvPlayerContext: Pointer; // Context value for the player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_PLAYEROUTPUTLEVEL}
|
|
TDVMsgPlayerOutputLevel = DVMSG_PLAYEROUTPUTLEVEL;
|
|
|
|
//
|
|
// An audio stream from the specified player has started playing back on the local client.
|
|
// (DVMSGID_PLAYERVOICESTART).
|
|
//
|
|
PDVMsgPlayerVoiceStart = ^TDVMsgPlayerVoiceStart;
|
|
DVMSG_PLAYERVOICESTART = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dvidSourcePlayerID: TDVID; // DVID of the Player
|
|
pvPlayerContext: Pointer; // Context value for this player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_PLAYERVOICESTART}
|
|
TDVMsgPlayerVoiceStart = DVMSG_PLAYERVOICESTART;
|
|
|
|
//
|
|
// The audio stream from the specified player has stopped playing back on the local client.
|
|
// (DVMSGID_PLAYERVOICESTOP)
|
|
//
|
|
PDVMsgPlayerVoiceStop = ^TDVMsgPlayerVoiceStop;
|
|
DVMSG_PLAYERVOICESTOP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dvidSourcePlayerID: DVID; // DVID of the player
|
|
pvPlayerContext: Pointer; // Context value for this player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_PLAYERVOICESTOP}
|
|
TDVMsgPlayerVoiceStop = DVMSG_PLAYERVOICESTOP;
|
|
|
|
//
|
|
// Transmission has started on the local machine
|
|
// (DVMSGID_RECORDSTART)
|
|
//
|
|
PDVMsgRecordStart = ^TDVMsgRecordStart;
|
|
DVMSG_RECORDSTART = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwPeakLevel: DWORD; // Peak level that caused transmission to start
|
|
pvLocalPlayerContext: Pointer; // Context value for the local player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_RECORDSTART}
|
|
TDVMsgRecordStart = DVMSG_RECORDSTART;
|
|
|
|
//
|
|
// Transmission has stopped on the local machine
|
|
// (DVMSGID_RECORDSTOP)
|
|
//
|
|
PDVMsgRecordStop = ^TDVMsgRecordStop;
|
|
DVMSG_RECORDSTOP = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwPeakLevel: DWORD; // Peak level that caused transmission to stop
|
|
pvLocalPlayerContext: Pointer; // Context value for the local player
|
|
end;
|
|
{$EXTERNALSYM DVMSG_RECORDSTOP}
|
|
TDVMsgRecordStop = DVMSG_RECORDSTOP;
|
|
|
|
//
|
|
// The voice session has been lost
|
|
// (DVMSGID_SESSIONLOST)
|
|
//
|
|
PDVMsgSessionLost = ^TDVMsgSessionLost;
|
|
DVMSG_SESSIONLOST = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
hrResult: HRESULT; // Reason the session was disconnected
|
|
end;
|
|
{$EXTERNALSYM DVMSG_SESSIONLOST}
|
|
TDVMsgSessionLost = DVMSG_SESSIONLOST;
|
|
|
|
//
|
|
// The target list has been updated for the local client
|
|
// (DVMSGID_SETTARGETS)
|
|
//
|
|
PDVMsgSetTargets = ^TDVMsgSetTargets;
|
|
DVMSG_SETTARGETS = packed record
|
|
dwSize: DWORD; // Size of this structure
|
|
dwNumTargets: DWORD; // # of targets
|
|
pdvidTargets: PDVID; // An array of DVIDs specifying the current targets
|
|
end;
|
|
{$EXTERNALSYM DVMSG_SETTARGETS}
|
|
TDVMsgSetTargets = DVMSG_SETTARGETS;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Functions
|
|
*
|
|
****************************************************************************)
|
|
|
|
(*
|
|
*
|
|
* This function is no longer supported. It is recommended that CoCreateInstance be used to create
|
|
* DirectPlay voice objects.
|
|
*
|
|
* extern HRESULT WINAPI DirectPlayVoiceCreate( const GUID * pcIID, void **ppvInterface, IUnknown *pUnknown);
|
|
*
|
|
*)
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlay8 Application Interfaces
|
|
*
|
|
****************************************************************************)
|
|
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlayVoiceClient);'}
|
|
{$EXTERNALSYM IDirectPlayVoiceClient}
|
|
IDirectPlayVoiceClient = interface(IUnknown)
|
|
['{1dfdc8ea-bcf7-41d6-b295-ab64b3b23306}']
|
|
(*** IDirectPlayVoiceClient methods ***)
|
|
function Initialize(pVoid: IUnknown; pMessageHandler: TDVMessageHandler;
|
|
pUserContext: Pointer; pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
|
|
function Connect(const pSoundDeviceConfig: TDVSoundDeviceConfig;
|
|
const pdvClientConfig: TDVClientConfig; dwFlags: DWORD): HResult; stdcall;
|
|
function Disconnect(dwFlags: DWORD): HResult; stdcall;
|
|
function GetSessionDesc(out pvSessionDesc: TDVSessionDesc): HResult; stdcall;
|
|
function GetClientConfig(out pClientConfig: TDVClientConfig): HResult; stdcall;
|
|
function SetClientConfig(const pClientConfig: TDVClientConfig): HResult; stdcall;
|
|
function GetCaps(out pDVCaps: TDVCaps): HResult; stdcall;
|
|
function GetCompressionTypes(pData: Pointer; var pdwDataSize: DWORD;
|
|
out pdwNumElements: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetTransmitTargets(pdvIDTargets: PDVID; dwNumTargets, dwFlags: DWORD): HResult; stdcall;
|
|
function GetTransmitTargets(pdvIDTargets: PDVID; var dwNumTargets: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function Create3DSoundBuffer(dvID: TDVID; lpdsSourceBuffer: IDirectSoundBuffer;
|
|
dwPriority, dwFlags: DWORD; out lpUserBuffer: IDirectSound3DBuffer): HResult; stdcall;
|
|
function Delete3DSoundBuffer(dvID: TDVID; lpUserBuffer: IDirectSound3DBuffer): HResult; stdcall;
|
|
function SetNotifyMask(pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
|
|
function GetSoundDeviceConfig(pSoundDeviceConfig: PDVSoundDeviceConfig; var pdwSize: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlayVoiceServer);'}
|
|
{$EXTERNALSYM IDirectPlayVoiceServer}
|
|
IDirectPlayVoiceServer = interface(IUnknown)
|
|
['{faa1c173-0468-43b6-8a2a-ea8a4f2076c9}']
|
|
(*** IDirectPlayVoiceServer methods ***)
|
|
function Initialize(pVoid: IUnknown; pMessageHandler: TDVMessageHandler;
|
|
pUserContext: Pointer; pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
|
|
function StartSession(const pSessionDesc: TDVSessionDesc; dwFlags: DWORD): HResult; stdcall;
|
|
function StopSession(dwFlags: DWORD): HResult; stdcall;
|
|
function GetSessionDesc(out pvSessionDesc: TDVSessionDesc): HResult; stdcall;
|
|
function SetSessionDesc(const pvSessionDesc: TDVSessionDesc): HResult; stdcall;
|
|
function GetCaps(out pDVCaps: TDVCaps): HResult; stdcall;
|
|
function GetCompressionTypes(pData: Pointer; var pdwDataSize: DWORD;
|
|
out pdwNumElements: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetTransmitTargets(dvSource: TDVID; pdvIDTargets: PDVID;
|
|
dwNumTargets, dwFlags: DWORD): HResult; stdcall;
|
|
function GetTransmitTargets(dvSource: TDVID; pdvIDTargets: PDVID;
|
|
var dwNumTargets: DWORD; dwFlags: DWORD): HResult; stdcall;
|
|
function SetNotifyMask(pdwMessageMask: PDWORD; dwMessageMaskElements: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectPlayVoiceTest);'}
|
|
{$EXTERNALSYM IDirectPlayVoiceTest}
|
|
IDirectPlayVoiceTest = interface(IUnknown)
|
|
['{d26af734-208b-41da-8224-e0ce79810be1}']
|
|
(*** IDirectPlayVoiceTest methods ***)
|
|
function CheckAudioSetup(pguidPlaybackDevice, pguidCaptureDevice: PGUID;
|
|
hwndParent: hWND; dwFlags: DWORD): HResult; stdcall;
|
|
end;
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DirectPlayVoice Interface IIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {1DFDC8EA-BCF7-41d6-B295-AB64B3B23306}
|
|
IID_IDirectPlayVoiceClient = IDirectPlayVoiceClient;
|
|
{$EXTERNALSYM IID_IDirectPlayVoiceClient}
|
|
|
|
// {FAA1C173-0468-43b6-8A2A-EA8A4F2076C9}
|
|
IID_IDirectPlayVoiceServer = IDirectPlayVoiceServer;
|
|
{$EXTERNALSYM IID_IDirectPlayVoiceServer}
|
|
|
|
// {D26AF734-208B-41da-8224-E0CE79810BE1}
|
|
IID_IDirectPlayVoiceTest = IDirectPlayVoiceTest;
|
|
{$EXTERNALSYM IID_IDirectPlayVoiceTest}
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DIRECTPLAYVOICE ERRORS
|
|
*
|
|
* Errors are represented by negative values and cannot be combined.
|
|
*
|
|
****************************************************************************)
|
|
|
|
const
|
|
_FACDPV = $15;
|
|
{$EXTERNALSYM _FACDPV}
|
|
|
|
//#define MAKE_DVHRESULT( code ) MAKE_HRESULT( 1, _FACDPV, code )
|
|
|
|
(*
|
|
#define DV_FULLDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x0005 )
|
|
#define DV_HALFDUPLEX MAKE_HRESULT( 0, _FACDPV, 0x000A )
|
|
#define DV_PENDING MAKE_HRESULT( 0, _FACDPV, 0x0010 )
|
|
|
|
#define DVERR_BUFFERTOOSMALL MAKE_DVHRESULT( 0x001E )
|
|
#define DVERR_EXCEPTION MAKE_DVHRESULT( 0x004A )
|
|
#define DVERR_GENERIC E_FAIL
|
|
#define DVERR_INVALIDFLAGS MAKE_DVHRESULT( 0x0078 )
|
|
#define DVERR_INVALIDOBJECT MAKE_DVHRESULT( 0x0082 )
|
|
#define DVERR_INVALIDPARAM E_INVALIDARG
|
|
#define DVERR_INVALIDPLAYER MAKE_DVHRESULT( 0x0087 )
|
|
#define DVERR_INVALIDGROUP MAKE_DVHRESULT( 0x0091 )
|
|
#define DVERR_INVALIDHANDLE MAKE_DVHRESULT( 0x0096 )
|
|
#define DVERR_OUTOFMEMORY E_OUTOFMEMORY
|
|
#define DVERR_PENDING DV_PENDING
|
|
#define DVERR_NOTSUPPORTED E_NOTIMPL
|
|
#define DVERR_NOINTERFACE E_NOINTERFACE
|
|
#define DVERR_SESSIONLOST MAKE_DVHRESULT( 0x012C )
|
|
#define DVERR_NOVOICESESSION MAKE_DVHRESULT( 0x012E )
|
|
#define DVERR_CONNECTIONLOST MAKE_DVHRESULT( 0x0168 )
|
|
#define DVERR_NOTINITIALIZED MAKE_DVHRESULT( 0x0169 )
|
|
#define DVERR_CONNECTED MAKE_DVHRESULT( 0x016A )
|
|
#define DVERR_NOTCONNECTED MAKE_DVHRESULT( 0x016B )
|
|
#define DVERR_CONNECTABORTING MAKE_DVHRESULT( 0x016E )
|
|
#define DVERR_NOTALLOWED MAKE_DVHRESULT( 0x016F )
|
|
#define DVERR_INVALIDTARGET MAKE_DVHRESULT( 0x0170 )
|
|
#define DVERR_TRANSPORTNOTHOST MAKE_DVHRESULT( 0x0171 )
|
|
#define DVERR_COMPRESSIONNOTSUPPORTED MAKE_DVHRESULT( 0x0172 )
|
|
#define DVERR_ALREADYPENDING MAKE_DVHRESULT( 0x0173 )
|
|
#define DVERR_SOUNDINITFAILURE MAKE_DVHRESULT( 0x0174 )
|
|
#define DVERR_TIMEOUT MAKE_DVHRESULT( 0x0175 )
|
|
#define DVERR_CONNECTABORTED MAKE_DVHRESULT( 0x0176 )
|
|
#define DVERR_NO3DSOUND MAKE_DVHRESULT( 0x0177 )
|
|
#define DVERR_ALREADYBUFFERED MAKE_DVHRESULT( 0x0178 )
|
|
#define DVERR_NOTBUFFERED MAKE_DVHRESULT( 0x0179 )
|
|
#define DVERR_HOSTING MAKE_DVHRESULT( 0x017A )
|
|
#define DVERR_NOTHOSTING MAKE_DVHRESULT( 0x017B )
|
|
#define DVERR_INVALIDDEVICE MAKE_DVHRESULT( 0x017C )
|
|
#define DVERR_RECORDSYSTEMERROR MAKE_DVHRESULT( 0x017D )
|
|
#define DVERR_PLAYBACKSYSTEMERROR MAKE_DVHRESULT( 0x017E )
|
|
#define DVERR_SENDERROR MAKE_DVHRESULT( 0x017F )
|
|
#define DVERR_USERCANCEL MAKE_DVHRESULT( 0x0180 )
|
|
#define DVERR_RUNSETUP MAKE_DVHRESULT( 0x0183 )
|
|
#define DVERR_INCOMPATIBLEVERSION MAKE_DVHRESULT( 0x0184 )
|
|
#define DVERR_INITIALIZED MAKE_DVHRESULT( 0x0187 )
|
|
#define DVERR_INVALIDPOINTER E_POINTER
|
|
#define DVERR_NOTRANSPORT MAKE_DVHRESULT( 0x0188 )
|
|
#define DVERR_NOCALLBACK MAKE_DVHRESULT( 0x0189 )
|
|
#define DVERR_TRANSPORTNOTINIT MAKE_DVHRESULT( 0x018A )
|
|
#define DVERR_TRANSPORTNOSESSION MAKE_DVHRESULT( 0x018B )
|
|
#define DVERR_TRANSPORTNOPLAYER MAKE_DVHRESULT( 0x018C )
|
|
#define DVERR_USERBACK MAKE_DVHRESULT( 0x018D )
|
|
#define DVERR_NORECVOLAVAILABLE MAKE_DVHRESULT( 0x018E )
|
|
#define DVERR_INVALIDBUFFER MAKE_DVHRESULT( 0x018F )
|
|
#define DVERR_LOCKEDBUFFER MAKE_DVHRESULT( 0x0190 )
|
|
*)
|
|
|
|
MAKE_DVHRESULT_R = (1 shl 31) or (_FACDPV shl 16);
|
|
|
|
DV_OK = S_OK;
|
|
{$EXTERNALSYM DV_OK}
|
|
DV_FULLDUPLEX = (0 shl 31) or (_FACDPV shl 16) or $0005;
|
|
{$EXTERNALSYM DV_FULLDUPLEX}
|
|
DV_HALFDUPLEX = (0 shl 31) or (_FACDPV shl 16) or $000A;
|
|
{$EXTERNALSYM DV_HALFDUPLEX}
|
|
DV_PENDING = (0 shl 31) or (_FACDPV shl 16) or $0010;
|
|
{$EXTERNALSYM DV_PENDING}
|
|
|
|
DVERR_BUFFERTOOSMALL = MAKE_DVHRESULT_R + $001E ;
|
|
{$EXTERNALSYM DVERR_BUFFERTOOSMALL}
|
|
DVERR_EXCEPTION = MAKE_DVHRESULT_R + $004A ;
|
|
{$EXTERNALSYM DVERR_EXCEPTION}
|
|
DVERR_GENERIC = E_FAIL;
|
|
{$EXTERNALSYM DVERR_GENERIC}
|
|
DVERR_INVALIDFLAGS = MAKE_DVHRESULT_R + $0078 ;
|
|
{$EXTERNALSYM DVERR_INVALIDFLAGS}
|
|
DVERR_INVALIDOBJECT = MAKE_DVHRESULT_R + $0082 ;
|
|
{$EXTERNALSYM DVERR_INVALIDOBJECT}
|
|
DVERR_INVALIDPARAM = E_INVALIDARG;
|
|
{$EXTERNALSYM DVERR_INVALIDPARAM}
|
|
DVERR_INVALIDPLAYER = MAKE_DVHRESULT_R + $0087 ;
|
|
{$EXTERNALSYM DVERR_INVALIDPLAYER}
|
|
DVERR_INVALIDGROUP = MAKE_DVHRESULT_R + $0091 ;
|
|
{$EXTERNALSYM DVERR_INVALIDGROUP}
|
|
DVERR_INVALIDHANDLE = MAKE_DVHRESULT_R + $0096 ;
|
|
{$EXTERNALSYM DVERR_INVALIDHANDLE}
|
|
DVERR_OUTOFMEMORY = E_OUTOFMEMORY;
|
|
{$EXTERNALSYM DVERR_OUTOFMEMORY}
|
|
DVERR_PENDING = DV_PENDING;
|
|
{$EXTERNALSYM DVERR_PENDING}
|
|
DVERR_NOTSUPPORTED = E_NOTIMPL;
|
|
{$EXTERNALSYM DVERR_NOTSUPPORTED}
|
|
DVERR_NOINTERFACE = E_NOINTERFACE;
|
|
{$EXTERNALSYM DVERR_NOINTERFACE}
|
|
DVERR_SESSIONLOST = MAKE_DVHRESULT_R + $012C ;
|
|
{$EXTERNALSYM DVERR_SESSIONLOST}
|
|
DVERR_NOVOICESESSION = MAKE_DVHRESULT_R + $012E ;
|
|
{$EXTERNALSYM DVERR_NOVOICESESSION}
|
|
DVERR_CONNECTIONLOST = MAKE_DVHRESULT_R + $0168 ;
|
|
{$EXTERNALSYM DVERR_CONNECTIONLOST}
|
|
DVERR_NOTINITIALIZED = MAKE_DVHRESULT_R + $0169 ;
|
|
{$EXTERNALSYM DVERR_NOTINITIALIZED}
|
|
DVERR_CONNECTED = MAKE_DVHRESULT_R + $016A ;
|
|
{$EXTERNALSYM DVERR_CONNECTED}
|
|
DVERR_NOTCONNECTED = MAKE_DVHRESULT_R + $016B ;
|
|
{$EXTERNALSYM DVERR_NOTCONNECTED}
|
|
DVERR_CONNECTABORTING = MAKE_DVHRESULT_R + $016E ;
|
|
{$EXTERNALSYM DVERR_CONNECTABORTING}
|
|
DVERR_NOTALLOWED = MAKE_DVHRESULT_R + $016F ;
|
|
{$EXTERNALSYM DVERR_NOTALLOWED}
|
|
DVERR_INVALIDTARGET = MAKE_DVHRESULT_R + $0170 ;
|
|
{$EXTERNALSYM DVERR_INVALIDTARGET}
|
|
DVERR_TRANSPORTNOTHOST = MAKE_DVHRESULT_R + $0171 ;
|
|
{$EXTERNALSYM DVERR_TRANSPORTNOTHOST}
|
|
DVERR_COMPRESSIONNOTSUPPORTED = MAKE_DVHRESULT_R + $0172 ;
|
|
{$EXTERNALSYM DVERR_COMPRESSIONNOTSUPPORTED}
|
|
DVERR_ALREADYPENDING = MAKE_DVHRESULT_R + $0173 ;
|
|
{$EXTERNALSYM DVERR_ALREADYPENDING}
|
|
DVERR_SOUNDINITFAILURE = MAKE_DVHRESULT_R + $0174 ;
|
|
{$EXTERNALSYM DVERR_SOUNDINITFAILURE}
|
|
DVERR_TIMEOUT = MAKE_DVHRESULT_R + $0175 ;
|
|
{$EXTERNALSYM DVERR_TIMEOUT}
|
|
DVERR_CONNECTABORTED = MAKE_DVHRESULT_R + $0176 ;
|
|
{$EXTERNALSYM DVERR_CONNECTABORTED}
|
|
DVERR_NO3DSOUND = MAKE_DVHRESULT_R + $0177 ;
|
|
{$EXTERNALSYM DVERR_NO3DSOUND}
|
|
DVERR_ALREADYBUFFERED = MAKE_DVHRESULT_R + $0178 ;
|
|
{$EXTERNALSYM DVERR_ALREADYBUFFERED}
|
|
DVERR_NOTBUFFERED = MAKE_DVHRESULT_R + $0179 ;
|
|
{$EXTERNALSYM DVERR_NOTBUFFERED}
|
|
DVERR_HOSTING = MAKE_DVHRESULT_R + $017A ;
|
|
{$EXTERNALSYM DVERR_HOSTING}
|
|
DVERR_NOTHOSTING = MAKE_DVHRESULT_R + $017B ;
|
|
{$EXTERNALSYM DVERR_NOTHOSTING}
|
|
DVERR_INVALIDDEVICE = MAKE_DVHRESULT_R + $017C ;
|
|
{$EXTERNALSYM DVERR_INVALIDDEVICE}
|
|
DVERR_RECORDSYSTEMERROR = MAKE_DVHRESULT_R + $017D ;
|
|
{$EXTERNALSYM DVERR_RECORDSYSTEMERROR}
|
|
DVERR_PLAYBACKSYSTEMERROR = MAKE_DVHRESULT_R + $017E ;
|
|
{$EXTERNALSYM DVERR_PLAYBACKSYSTEMERROR}
|
|
DVERR_SENDERROR = MAKE_DVHRESULT_R + $017F ;
|
|
{$EXTERNALSYM DVERR_SENDERROR}
|
|
DVERR_USERCANCEL = MAKE_DVHRESULT_R + $0180 ;
|
|
{$EXTERNALSYM DVERR_USERCANCEL}
|
|
DVERR_RUNSETUP = MAKE_DVHRESULT_R + $0183 ;
|
|
{$EXTERNALSYM DVERR_RUNSETUP}
|
|
DVERR_INCOMPATIBLEVERSION = MAKE_DVHRESULT_R + $0184 ;
|
|
{$EXTERNALSYM DVERR_INCOMPATIBLEVERSION}
|
|
DVERR_INITIALIZED = MAKE_DVHRESULT_R + $0187 ;
|
|
{$EXTERNALSYM DVERR_INITIALIZED}
|
|
DVERR_INVALIDPOINTER = E_POINTER;
|
|
{$EXTERNALSYM DVERR_INVALIDPOINTER}
|
|
DVERR_NOTRANSPORT = MAKE_DVHRESULT_R + $0188 ;
|
|
{$EXTERNALSYM DVERR_NOTRANSPORT}
|
|
DVERR_NOCALLBACK = MAKE_DVHRESULT_R + $0189 ;
|
|
{$EXTERNALSYM DVERR_NOCALLBACK}
|
|
DVERR_TRANSPORTNOTINIT = MAKE_DVHRESULT_R + $018A ;
|
|
{$EXTERNALSYM DVERR_TRANSPORTNOTINIT}
|
|
DVERR_TRANSPORTNOSESSION = MAKE_DVHRESULT_R + $018B ;
|
|
{$EXTERNALSYM DVERR_TRANSPORTNOSESSION}
|
|
DVERR_TRANSPORTNOPLAYER = MAKE_DVHRESULT_R + $018C ;
|
|
{$EXTERNALSYM DVERR_TRANSPORTNOPLAYER}
|
|
DVERR_USERBACK = MAKE_DVHRESULT_R + $018D ;
|
|
{$EXTERNALSYM DVERR_USERBACK}
|
|
DVERR_NORECVOLAVAILABLE = MAKE_DVHRESULT_R + $018E ;
|
|
{$EXTERNALSYM DVERR_NORECVOLAVAILABLE}
|
|
DVERR_INVALIDBUFFER = MAKE_DVHRESULT_R + $018F ;
|
|
{$EXTERNALSYM DVERR_INVALIDBUFFER}
|
|
DVERR_LOCKEDBUFFER = MAKE_DVHRESULT_R + $0190 ;
|
|
{$EXTERNALSYM DVERR_LOCKEDBUFFER}
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Compatibility types for non-Borland compliant translations of DirectPlay8 //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
type
|
|
PDvmsg_Connectresult = PDVMsgConnectResult;
|
|
TDvmsg_Connectresult = TDVMsgConnectResult;
|
|
PDvmsg_Createvoiceplayer = PDVMsgCreateVoicePlayer;
|
|
TDvmsg_Createvoiceplayer = TDVMsgCreateVoicePlayer;
|
|
PDvmsg_Deletevoiceplayer = PDVMsgDeleteVoicePlayer;
|
|
TDvmsg_Deletevoiceplayer = TDVMsgDeleteVoicePlayer;
|
|
PDvmsg_Disconnectresult = PDVMsgDisconnectResult;
|
|
TDvmsg_Disconnectresult = TDVMsgDisconnectResult;
|
|
PDvmsg_Hostmigrated = PDVMsgHostMigrated;
|
|
TDvmsg_Hostmigrated = TDVMsgHostMigrated;
|
|
PDvmsg_Inputlevel = PDVMsgInputlevel;
|
|
TDvmsg_Inputlevel = TDVMsgInputlevel;
|
|
PDvmsg_Localhostsetup = PDVMsgLocalHostSetup;
|
|
TDvmsg_Localhostsetup = TDVMsgLocalHostSetup;
|
|
PDvmsg_Outputlevel = PDVMsgOutputLevel;
|
|
TDvmsg_Outputlevel = TDVMsgOutputLevel;
|
|
PDvmsg_Playeroutputlevel = PDVMsgPlayerOutputLevel;
|
|
TDvmsg_Playeroutputlevel = TDVMsgPlayerOutputLevel;
|
|
PDvmsg_Playervoicestart = PDVMsgPlayerVoiceStart;
|
|
TDvmsg_Playervoicestart = TDVMsgPlayerVoiceStart;
|
|
PDvmsg_Playervoicestop = PDVMsgPlayerVoiceStop;
|
|
TDvmsg_Playervoicestop = TDVMsgPlayerVoiceStop;
|
|
PDvmsg_Recordstart = PDVMsgRecordStart;
|
|
TDvmsg_Recordstart = TDVMsgRecordStart;
|
|
PDvmsg_Recordstop = PDVMsgRecordStop;
|
|
TDvmsg_Recordstop = TDVMsgRecordStop;
|
|
PDvmsg_Sessionlost = PDVMsgSessionLost;
|
|
TDvmsg_Sessionlost = TDVMsgSessionLost;
|
|
PDvmsg_Settargets = PDVMsgSetTargets;
|
|
TDvmsg_Settargets = TDVMsgSetTargets;
|
|
|
|
PDPN_Application_Desc = PDPNApplicationDesc;
|
|
TDPN_Application_Desc = TDPNApplicationDesc;
|
|
PDPN_Caps = PDPNCaps;
|
|
TDPN_Caps = TDPNCaps;
|
|
PDPN_Caps_Ex = PDPNCapsEx;
|
|
TDPN_Caps_Ex = TDPNCapsEx;
|
|
PDPN_Connection_Info = PDPNConnectionInfo;
|
|
TDPN_Connection_Info = TDPNConnectionInfo;
|
|
PDPN_Group_Info = PDPNGroupInfo;
|
|
TDPN_Group_Info = TDPNGroupInfo;
|
|
PDPN_Player_Info = PDPNPlayerInfo;
|
|
TDPN_Player_Info = TDPNPlayerInfo;
|
|
PDPN_Security_Credentials = PDPNSecurityCredentials;
|
|
TDPN_Security_Credentials = TDPNSecurityCredentials;
|
|
PDPN_Security_Desc = PDPNSecurityDesc;
|
|
TDPN_Security_Desc = TDPNSecurityDesc;
|
|
PDPN_Service_Provider_Info = PDPNServiceProviderInfo;
|
|
TDPN_Service_Provider_Info = TDPNServiceProviderInfo;
|
|
PDPN_Sp_Caps = PDPNSpCaps;
|
|
TDPN_Sp_Caps = TDPNSpCaps;
|
|
PDPNMsg_Add_Player_To_Group = PDPNMsgAddPlayerToGroup;
|
|
TDPNMsg_Add_Player_To_Group = TDPNMsgAddPlayerToGroup;
|
|
PDPNMsg_Async_Op_Complete = PDPNMsgAsyncOpComplete;
|
|
TDPNMsg_Async_Op_Complete = TDPNMsgAsyncOpComplete;
|
|
PDPNMsg_Client_Info = PDPNMsgClientInfo;
|
|
TDPNMsg_Client_Info = TDPNMsgClientInfo;
|
|
PDPNMsg_Connect_Complete = PDPNMsgConnectComplete;
|
|
TDPNMsg_Connect_Complete = TDPNMsgConnectComplete;
|
|
PDPNMsg_Create_Group = PDPNMsgCreateGroup;
|
|
TDPNMsg_Create_Group = TDPNMsgCreateGroup;
|
|
PDPNMsg_Create_Player = PDPNMsgCreatePlayer;
|
|
TDPNMsg_Create_Player = TDPNMsgCreatePlayer;
|
|
PDPNMsg_Destroy_Group = PDPNMsgDestroyGroup;
|
|
TDPNMsg_Destroy_Group = TDPNMsgDestroyGroup;
|
|
PDPNMsg_Destroy_Player = PDPNMsgDestroyPlayer;
|
|
TDPNMsg_Destroy_Player = TDPNMsgDestroyPlayer;
|
|
PDPNMsg_Enum_Hosts_Query = PDPNMsgEnumHostsQuery;
|
|
TDPNMsg_Enum_Hosts_Query = TDPNMsgEnumHostsQuery;
|
|
PDPNMsg_Enum_Hosts_Response = PDPNMsgEnumHostsResponse;
|
|
TDPNMsg_Enum_Hosts_Response = TDPNMsgEnumHostsResponse;
|
|
PDPNMsg_Group_Info = PDPNMsgGroupInfo;
|
|
TDPNMsg_Group_Info = TDPNMsgGroupInfo;
|
|
PDPNMsg_Host_Migrate = PDPNMsgHostMigrate;
|
|
TDPNMsg_Host_Migrate = TDPNMsgHostMigrate;
|
|
PDPNMsg_Indicate_Connect = PDPNMsgIndicateConnect;
|
|
TDPNMsg_Indicate_Connect = TDPNMsgIndicateConnect;
|
|
PDPNMsg_Indicated_Connect_Aborted = PDPNMsgIndicatedConnectAborted;
|
|
TDPNMsg_Indicated_Connect_Aborted = TDPNMsgIndicatedConnectAborted;
|
|
PDPNMsg_Peer_Info = PDPNMsgPeerInfo;
|
|
TDPNMsg_Peer_Info = TDPNMsgPeerInfo;
|
|
PDPNMsg_Receive = PDPNMsgReceive;
|
|
TDPNMsg_Receive = TDPNMsgReceive;
|
|
PDPNMsg_Remove_Player_From_Group = PDPNMsgRemovePlayerFromGroup;
|
|
TDPNMsg_Remove_Player_From_Group = TDPNMsgRemovePlayerFromGroup;
|
|
PDPNMsg_Return_Buffer = PDPNMsgReturnBuffer;
|
|
TDPNMsg_Return_Buffer = TDPNMsgReturnBuffer;
|
|
PDPNMsg_Send_Complete = PDPNMsgSendComplete;
|
|
TDPNMsg_Send_Complete = TDPNMsgSendComplete;
|
|
PDPNMsg_Server_Info = PDPNMsgServerInfo;
|
|
TDPNMsg_Server_Info = TDPNMsgServerInfo;
|
|
PDPNMsg_Terminate_Session = PDPNMsgTerminateSession;
|
|
TDPNMsg_Terminate_Session = TDPNMsgTerminateSession;
|
|
PDPNMsg_Create_Thread = PDPNMsgCreateThread;
|
|
TDPNMsg_Create_Thread = TDPNMsgCreateThread;
|
|
PDPNMsg_Destroy_Thread = PDPNMsgDestroyThread;
|
|
TDPNMsg_Destroy_Thread = TDPNMsgDestroyThread;
|
|
PDPNMsg_Nat_Resolver_Query = PDPNMsgNatResolverQuery;
|
|
TDPNMsg_Nat_Resolver_Query = TDPNMsgNatResolverQuery;
|
|
|
|
|
|
implementation
|
|
|
|
// #define MAKE_DPNHRESULT( code ) MAKE_HRESULT( 1, _DPN_FACILITY_CODE, ( code + _DPNHRESULT_BASE ) )
|
|
function MAKE_DPNHRESULT(Code: DWORD): DWORD;
|
|
begin
|
|
Result:= DWord((1 shl 31) or (_DPN_FACILITY_CODE shl 16)) or (Code + _DPNHRESULT_BASE);
|
|
end;
|
|
|
|
end.
|