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

📄 tspi.pas

📁 电话应用编程接口的pas文件。 The directives can be controlled using the Tapi.inc include file which is included
💻 PAS
📖 第 1 页 / 共 4 页
字号:
{******************************************************************}
{                                                                  }
{       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 + -