📄 tspi.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Telephony SPI interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: tspi.h, released March 1999. }
{ The original Pascal code is: TSPI.pas, released 28 Dec 1999. }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999-2000 Marcel van Brakel. }
{ }
{ Contributor(s): Alan C. Moore (ACMDOC@aol.com) }
{ Rudy Velthuis (rvelthuis@gmx.de) }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ 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/NPL/NPL-1_1Final.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. }
{ }
{******************************************************************}
unit TSPI;
{$WEAKPACKAGEUNIT}
interface
{$HPPEMIT '#include <windows.h>'}
{$HPPEMIT '#include "tapi.h"'}
{$HPPEMIT '#if WIN32'}
{$HPPEMIT '#if TAPI_CURRENT_VERSION < 0x00020000'}
{$HPPEMIT '#error Building a 32bit 1.3 or 1.4 service provider isn't supported'}
{$HPPEMIT '#endif'}
{$HPPEMIT '#endif'}
uses
Windows, Tapi;
// The Telephony API is jointly copyrighted by Intel and Microsoft. You are
// granted a royalty free worldwide, unlimited license to make copies, and use
// the API/SPI for making applications/drivers that interface with the
// specification provided that this paragraph and the Intel/Microsoft copyright
// statement is maintained as is in the text and source code files.
// Copyright (c) 1992-1998 Microsoft Corporation
// Portions copyright 1992, 1993 Intel/Microsoft, all rights reserved.
{$INCLUDE TAPI.INC}
{$IFDEF WIN32}
{$IFNDEF TAPI20}
#error Building a 32bit 1.3 or 1.4 service provider is not supported.
{$ENDIF}
{$ENDIF}
// tspi.h is only of use in conjunction with tapi.h. Very few types are
// defined in tspi.h. Most types of procedure formal parameters are simply
// passed through from corresponding procedures in tapi.h. A working knowledge
// of the TAPI interface is required for an understanding of this interface.
type
PHDRVCALL = ^HDRVCALL;
HDRVCALL__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HDRVCALL__}
HDRVCALL = HDRVCALL__;
{$EXTERNALSYM HDRVCALL}
PHDRVLLINE= ^HDRVLINE;
HDRVLINE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HDRVLINE__}
HDRVLINE = HDRVLINE__;
{$EXTERNALSYM HDRVLINE}
PHDRVPHONE = ^HDRVPHONE;
HDRVPHONE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HDRVPHONE__}
HDRVPHONE = HDRVPHONE__;
{$EXTERNALSYM HDRVPHONE}
PHDRVDIALOGINSTANCE = ^HDRVDIALOGINSTANCE;
HDRVDIALOGINSTANCE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HDRVDIALOGINSTANCE__}
HDRVDIALOGINSTANCE = HDRVDIALOGINSTANCE__;
{$EXTERNALSYM HDRVDIALOGINSTANCE}
PHDRVMSPLINE = ^HDRVMSPLINE;
HDRVMSPLINE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HDRVMSPLINE__}
HDRVMSPLINE = HDRVMSPLINE__;
{$EXTERNALSYM HDRVMSPLINE}
PHTAPICALL = ^HTAPICALL;
HTAPICALL__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HTAPICALL__}
HTAPICALL = HTAPICALL__;
{$EXTERNALSYM HTAPICALL}
PHTAPILINE = ^HTAPILINE;
HTAPILINE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HTAPILINE__}
HTAPILINE = HTAPILINE__;
{$EXTERNALSYM HTAPILINE}
PHTAPIPHONE = ^HTAPIPHONE;
HTAPIPHONE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HTAPIPHONE__}
HTAPIPHONE = HTAPIPHONE__;
{$EXTERNALSYM HTAPIPHONE}
PHTAPIDIALOGINSTANCE = ^HTAPIDIALOGINSTANCE;
HTAPIDIALOGINSTANCE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HTAPIDIALOGINSTANCE__}
HTAPIDIALOGINSTANCE = HTAPIDIALOGINSTANCE__;
{$EXTERNALSYM HTAPIDIALOGINSTANCE}
PHTAPIMSPLINE = ^HTAPIMSPLINE;
HTAPIMSPLINE__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HTAPIMSPLINE__}
HTAPIMSPLINE = HTAPIMSPLINE__;
{$EXTERNALSYM HTAPIMSPLINE}
PHPROVIDER = ^HPROVIDER;
HPROVIDER__ = packed record
unused: Longint;
end;
{$EXTERNALSYM HPROVIDER__}
HPROVIDER = HPROVIDER__;
{$EXTERNALSYM HPROVIDER}
TDrvRequestID = DWORD;
DRV_REQUESTID = DWORD;
{$EXTERNALSYM DRV_REQUESTID}
ASYNC_COMPLETION = procedure(dwRequestID: TDrvRequestID;
lResult: Longint); stdcall;
{$EXTERNALSYM ASYNC_COMPLETION}
TASyncCompletion = ASYNC_COMPLETION;
LINEEVENT = procedure(htLine: HTAPILINE; htCall: HTAPICALL; dwMsg, dwParam1,
dwParam2, dwParam3: DWORD_PTR) stdcall;
{$EXTERNALSYM LINEEVENT}
TLineEvent = LINEEVENT;
PHONEEVENT = procedure(htPhone: HTAPIPHONE; dwMsg: DWORD; dwParam1, dwParam2,
dwParam3: DWORD_PTR) stdcall;
{$EXTERNALSYM PHONEEVENT}
TPhoneEvent = PHONEEVENT;
TUISPIDLLCALLBACK = function(dwObjectID, dwObjectType: DWORD;
lpParams: Pointer; dwSize: DWORD): Longint stdcall;
{$EXTERNALSYM TUISPIDLLCALLBACK}
TTUISpiDllCallback = TUISPIDLLCALLBACK;
{$IFDEF TAPI20}
PTUISpiCreateDialogInstanceParams = ^TTUISpiCreateDialogInstanceParams;
tuispicreatedialoginstanceparams_tag = packed record
dwRequestID: TDrvRequestID;
hdDlgInst: HDRVDIALOGINSTANCE;
htDlgInst: HTAPIDIALOGINSTANCE;
lpszUIDLLName: LPCWSTR;
lpParams: Pointer;
dwSize: DWORD;
end;
{$EXTERNALSYM tuispicreatedialoginstanceparams_tag}
TTUISpiCreateDialogInstanceParams = tuispicreatedialoginstanceparams_tag;
TUISPICREATEDIALOGINSTANCEPARAMS = tuispicreatedialoginstanceparams_tag;
{$EXTERNALSYM TUISPICREATEDIALOGINSTANCEPARAMS}
{$ENDIF}
{$IFDEF TAPI30}
const
LINEQOSSTRUCT_KEY = DWORD(1280398155); // DWORD('LQSK')
{$EXTERNALSYM LINEQOSSTRUCT_KEY}
type
PLineQosServiceLevel = ^TLineQosServiceLevel;
LINEQOSSERVICELEVEL_tag = packed record
dwMediaMode: DWORD;
dwQOSServiceLevel: DWORD;
end;
{$EXTERNALSYM LINEQOSSERVICELEVEL_tag}
TLineQosServiceLevel = LINEQOSSERVICELEVEL_tag;
PLineCallQosInfo = ^TLineCallQosInfo;
LINECALLQOSINFO_tag = packed record
dwKey: DWORD;
dwTotalSize: DWORD;
dwQOSRequestType: DWORD;
case Longint of
0: (SetQosServiceLevel: packed record
dwNumServiceLevelEntries: DWORD;
LineQOSServiceLevel: array[0..0] of TLineQosServiceLevel;
end;);
end;
{$EXTERNALSYM LINECALLQOSINFO_tag}
TLineCallQosInfo = LINECALLQOSINFO_tag;
// {831CE2D6-83B5-11d1-BB5C-00C04FB6809F}
// EXTERN_C const CLSID TAPIPROTOCOL_PSTN;
// {831CE2D7-83B5-11d1-BB5C-00C04FB6809F}
// EXTERN_C const CLSID TAPIPROTOCOL_H323;
// {831CE2D8-83B5-11d1-BB5C-00C04FB6809F}
// EXTERN_C const CLSID TAPIPROTOCOL_Multicast;
{$ENDIF}
const
TSPI_MESSAGE_BASE = 500; // Lowest-numbered TSPI-specific message ID number
{$EXTERNALSYM TSPI_MESSAGE_BASE}
LINE_NEWCALL = TSPI_MESSAGE_BASE + 0;
{$EXTERNALSYM LINE_NEWCALL}
LINE_CALLDEVSPECIFIC = TSPI_MESSAGE_BASE + 1;
{$EXTERNALSYM LINE_CALLDEVSPECIFIC}
LINE_CALLDEVSPECIFICFEATURE = TSPI_MESSAGE_BASE + 2;
{$EXTERNALSYM LINE_CALLDEVSPECIFICFEATURE}
{$IFDEF TAPI20}
LINE_CREATEDIALOGINSTANCE = TSPI_MESSAGE_BASE + 3; // TSPI v2.0
{$EXTERNALSYM LINE_CREATEDIALOGINSTANCE}
LINE_SENDDIALOGINSTANCEDATA = TSPI_MESSAGE_BASE + 4; // TSPI v2.0
{$EXTERNALSYM LINE_SENDDIALOGINSTANCEDATA}
{$ENDIF}
{$IFDEF TAPI30}
LINE_SENDMSPDATA = TSPI_MESSAGE_BASE + 5; // TSPI v3.0
{$EXTERNALSYM LINE_SENDMSPDATA}
LINE_QOSINFO = TSPI_MESSAGE_BASE + 6; // TSPI v3.0
{$EXTERNALSYM LINE_QOSINFO}
{$ENDIF}
{$IFDEF TAPI20}
LINETSPIOPTION_NONREENTRANT = $00000001; // TSPI v2.0
{$EXTERNALSYM LINETSPIOPTION_NONREENTRANT}
{$ENDIF}
{$IFDEF TAPI20}
TUISPIDLL_OBJECT_LINEID = 1; // TSPI v2.0
{$EXTERNALSYM TUISPIDLL_OBJECT_LINEID}
TUISPIDLL_OBJECT_PHONEID = 2; // TSPI v2.0
{$EXTERNALSYM TUISPIDLL_OBJECT_PHONEID}
TUISPIDLL_OBJECT_PROVIDERID = 3; // TSPI v2.0
{$EXTERNALSYM TUISPIDLL_OBJECT_PROVIDERID}
TUISPIDLL_OBJECT_DIALOGINSTANCE = 4; // TSPI v2.0
{$EXTERNALSYM TUISPIDLL_OBJECT_DIALOGINSTANCE}
{$ENDIF}
{$IFDEF TAPI30}
PRIVATEOBJECT_NONE = $00000001; // TSPI v3.0
{$EXTERNALSYM PRIVATEOBJECT_NONE}
PRIVATEOBJECT_CALLID = $00000002; // TSPI v3.0
{$EXTERNALSYM PRIVATEOBJECT_CALLID}
PRIVATEOBJECT_LINE = $00000003; // TSPI v3.0
{$EXTERNALSYM PRIVATEOBJECT_LINE}
PRIVATEOBJECT_CALL = $00000004; // TSPI v3.0
{$EXTERNALSYM PRIVATEOBJECT_CALL}
PRIVATEOBJECT_PHONE = $00000005; // TSPI v3.0
{$EXTERNALSYM PRIVATEOBJECT_PHONE}
PRIVATEOBJECT_ADDRESS = $00000006; // TSPI v3.0
{$EXTERNALSYM PRIVATEOBJECT_ADDRESS}
LINEQOSREQUESTTYPE_SERVICELEVEL = $00000001; // TSPI v3.0
{$EXTERNALSYM LINEQOSREQUESTTYPE_SERVICELEVEL}
LINEQOSSERVICELEVEL_NEEDED = $00000001; // TSPI v3.0
{$EXTERNALSYM LINEQOSSERVICELEVEL_NEEDED}
LINEQOSSERVICELEVEL_IFAVAILABLE = $00000002; // TSPI v3.0
{$EXTERNALSYM LINEQOSSERVICELEVEL_IFAVAILABLE}
LINEQOSSERVICELEVEL_BESTEFFORT = $00000003; // TSPI v3.0
{$EXTERNALSYM LINEQOSSERVICELEVEL_BESTEFFORT}
LINEEQOSINFO_NOQOS = $00000001; // TSPI v3.0
{$EXTERNALSYM LINEEQOSINFO_NOQOS}
LINEEQOSINFO_ADMISSIONFAILURE = $00000002; // TSPI v3.0
{$EXTERNALSYM LINEEQOSINFO_ADMISSIONFAILURE}
LINEEQOSINFO_POLICYFAILURE = $00000003; // TSPI v3.0
{$EXTERNALSYM LINEEQOSINFO_POLICYFAILURE}
LINEEQOSINFO_GENERICERROR = $00000004; // TSPI v3.0
{$EXTERNALSYM LINEEQOSINFO_GENERICERROR}
{$ENDIF}
//
// The following function prototypes pertain
// to a service provider's core module
//
function TSPI_lineAccept(dwRequestID: TDrvRequestID; hdCall: HDRVCALL;
lpsUserUserInfo: LPCSTR; dwSize: DWORD): Longint; stdcall;
{$EXTERNALSYM TSPI_lineAccept}
function TSPI_lineAddToConference(dwRequestID: TDrvRequestID;
hdConfCall, hdConsultCall: HDRVCALL): Longint; stdcall;
{$EXTERNALSYM TSPI_lineAddToConference}
function TSPI_lineAnswer(dwRequestID: TDrvRequestID; hdCall: HDRVCALL;
lpsUserUserInfo: LPCSTR; dwSize: DWORD): Longint; stdcall;
{$EXTERNALSYM TSPI_lineAnswer}
{$IFDEF TAPI20}
function TSPI_lineBlindTransfer(dwRequestID: TDrvRequestID; hdCall: HDRVCALL;
lpszDestAddress: LPCWSTR; dwCountryCode: DWORD): Longint; stdcall;
{$EXTERNALSYM TSPI_lineBlindTransfer}
{$ELSE}
function TSPI_lineBlindTransfer(dwRequestID: TDrvRequestID; hdCall: HDRVCALL;
lpszDestAddress: LPCSTR; dwCountryCode: DWORD): Longint; stdcall;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -