📄 tspi.h
字号:
/*++ BUILD Version: 0000 // Increment this if a change has global effects
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.
Module Name:
tspi.h
Notes:
Additions to the Telephony Service Provider Interface (TSPI) since
version 1.0 are noted by version number (i.e. "TSPI v1.4").
--*/
#ifndef TSPI_H
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define TSPI_H
#include <windows.h>
#include "tapi.h"
#if WIN32
#if TAPI_CURRENT_VERSION < 0x00020000
#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.
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
#ifndef DECLARE_OPAQUE
#define DECLARE_OPAQUE(name) struct name##__ { int unused; }; \
typedef const struct name##__ FAR* name
#endif // DECLARE_OPAQUE
#ifndef TSPIAPI
#define TSPIAPI PASCAL
#endif
DECLARE_OPAQUE(HDRVCALL);
DECLARE_OPAQUE(HDRVLINE);
DECLARE_OPAQUE(HDRVPHONE);
DECLARE_OPAQUE(HDRVDIALOGINSTANCE);
DECLARE_OPAQUE(HDRVMSPLINE);
typedef HDRVCALL FAR * LPHDRVCALL;
typedef HDRVLINE FAR * LPHDRVLINE;
typedef HDRVPHONE FAR * LPHDRVPHONE;
typedef HDRVDIALOGINSTANCE FAR * LPHDRVDIALOGINSTANCE;
typedef HDRVMSPLINE FAR * LPHDRVMSPLINE;
DECLARE_OPAQUE(HTAPICALL);
DECLARE_OPAQUE(HTAPILINE);
DECLARE_OPAQUE(HTAPIPHONE);
DECLARE_OPAQUE(HTAPIDIALOGINSTANCE);
DECLARE_OPAQUE(HTAPIMSPLINE);
typedef HTAPICALL FAR * LPHTAPICALL;
typedef HTAPILINE FAR * LPHTAPILINE;
typedef HTAPIPHONE FAR * LPHTAPIPHONE;
typedef HTAPIDIALOGINSTANCE FAR * LPHTAPIDIALOGINSTANCE;
typedef HTAPIMSPLINE FAR * LPHTAPIMSPLINE;
DECLARE_OPAQUE(HPROVIDER);
typedef HPROVIDER FAR * LPHPROVIDER;
typedef DWORD DRV_REQUESTID;
typedef void (CALLBACK * ASYNC_COMPLETION)(
DRV_REQUESTID dwRequestID,
LONG lResult
);
typedef void (CALLBACK * LINEEVENT)(
HTAPILINE htLine,
HTAPICALL htCall,
DWORD dwMsg,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2,
DWORD_PTR dwParam3
);
typedef void (CALLBACK * PHONEEVENT)(
HTAPIPHONE htPhone,
DWORD dwMsg,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2,
DWORD_PTR dwParam3
);
typedef LONG (CALLBACK * TUISPIDLLCALLBACK)(
DWORD_PTR dwObjectID,
DWORD dwObjectType,
LPVOID lpParams,
DWORD dwSize
);
#if TAPI_CURRENT_VERSION >= 0x00020000
typedef struct tuispicreatedialoginstanceparams_tag
{
DRV_REQUESTID dwRequestID;
HDRVDIALOGINSTANCE hdDlgInst;
HTAPIDIALOGINSTANCE htDlgInst;
LPCWSTR lpszUIDLLName;
LPVOID lpParams;
DWORD dwSize;
} TUISPICREATEDIALOGINSTANCEPARAMS, *LPTUISPICREATEDIALOGINSTANCEPARAMS;
#endif
#if (TAPI_CURRENT_VERSION >= 0x00030000)
#define LINEQOSSTRUCT_KEY ((DWORD)'LQSK')
typedef struct LINEQOSSERVICELEVEL_tag
{
DWORD dwMediaMode;
DWORD dwQOSServiceLevel;
} LINEQOSSERVICELEVEL, * LPLINEQOSSERVICELEVEL;
typedef struct LINECALLQOSINFO_tag
{
DWORD dwKey;
DWORD dwTotalSize;
DWORD dwQOSRequestType;
union
{
struct
{
DWORD dwNumServiceLevelEntries;
LINEQOSSERVICELEVEL LineQOSServiceLevel[1];
} SetQOSServiceLevel;
};
} LINECALLQOSINFO, * LPLINECALLQOSINFO;
// {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
#define TSPI_MESSAGE_BASE 500
// The lowest-numbered TSPI-specific message ID number
#define LINE_NEWCALL ((long) TSPI_MESSAGE_BASE + 0)
#define LINE_CALLDEVSPECIFIC ((long) TSPI_MESSAGE_BASE + 1)
#define LINE_CALLDEVSPECIFICFEATURE ((long) TSPI_MESSAGE_BASE + 2)
#if (TAPI_CURRENT_VERSION >= 0x00020000)
#define LINE_CREATEDIALOGINSTANCE ((long) TSPI_MESSAGE_BASE + 3)
// TSPI v2.0
#define LINE_SENDDIALOGINSTANCEDATA ((long) TSPI_MESSAGE_BASE + 4)
// TSPI v2.0
#endif
#if (TAPI_CURRENT_VERSION >= 0x00030000)
#define LINE_SENDMSPDATA ((long) TSPI_MESSAGE_BASE + 5)
// TSPI v3.0
#define LINE_QOSINFO ((long) TSPI_MESSAGE_BASE + 6)
// TSPI v3.0
#endif
#if (TAPI_CURRENT_VERSION >= 0x00020000)
#define LINETSPIOPTION_NONREENTRANT 0x00000001 // TSPI v2.0
#endif
#if (TAPI_CURRENT_VERSION >= 0x00020000)
#define TUISPIDLL_OBJECT_LINEID 1L // TSPI v2.0
#define TUISPIDLL_OBJECT_PHONEID 2L // TSPI v2.0
#define TUISPIDLL_OBJECT_PROVIDERID 3L // TSPI v2.0
#define TUISPIDLL_OBJECT_DIALOGINSTANCE 4L // TSPI v2.0
#endif
#if (TAPI_CURRENT_VERSION >= 0x00030000)
#define PRIVATEOBJECT_NONE 0x00000001 // TSPI v3.0
#define PRIVATEOBJECT_CALLID 0x00000002 // TSPI v3.0
#define PRIVATEOBJECT_LINE 0x00000003 // TSPI v3.0
#define PRIVATEOBJECT_CALL 0x00000004 // TSPI v3.0
#define PRIVATEOBJECT_PHONE 0x00000005 // TSPI v3.0
#define PRIVATEOBJECT_ADDRESS 0x00000006 // TSPI v3.0
#define LINEQOSREQUESTTYPE_SERVICELEVEL 0x00000001 // TSPI v3.0
#define LINEQOSSERVICELEVEL_NEEDED 0x00000001 // TSPI v3.0
#define LINEQOSSERVICELEVEL_IFAVAILABLE 0x00000002 // TSPI v3.0
#define LINEQOSSERVICELEVEL_BESTEFFORT 0x00000003 // TSPI v3.0
#define LINEEQOSINFO_NOQOS 0x00000001 // TSPI v3.0
#define LINEEQOSINFO_ADMISSIONFAILURE 0x00000002 // TSPI v3.0
#define LINEEQOSINFO_POLICYFAILURE 0x00000003 // TSPI v3.0
#define LINEEQOSINFO_GENERICERROR 0x00000004 // TSPI v3.0
#endif
//
// The following function prototypes pertain
// to a service provider's core module
//
LONG
TSPIAPI
TSPI_lineAccept(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCSTR lpsUserUserInfo,
DWORD dwSize
);
LONG
TSPIAPI
TSPI_lineAddToConference(
DRV_REQUESTID dwRequestID,
HDRVCALL hdConfCall,
HDRVCALL hdConsultCall
);
LONG
TSPIAPI
TSPI_lineAnswer(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCSTR lpsUserUserInfo,
DWORD dwSize
);
#if (TAPI_CURRENT_VERSION >= 0x00020000)
LONG
TSPIAPI
TSPI_lineBlindTransfer(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCWSTR lpszDestAddress,
DWORD dwCountryCode);
#else
LONG
TSPIAPI
TSPI_lineBlindTransfer(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCSTR lpszDestAddress,
DWORD dwCountryCode);
#endif
LONG
TSPIAPI
TSPI_lineClose(
HDRVLINE hdLine
);
LONG
TSPIAPI
TSPI_lineCloseCall(
HDRVCALL hdCall
);
LONG
TSPIAPI
TSPI_lineCompleteCall(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPDWORD lpdwCompletionID,
DWORD dwCompletionMode,
DWORD dwMessageID
);
LONG
TSPIAPI
TSPI_lineCompleteTransfer(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
HDRVCALL hdConsultCall,
HTAPICALL htConfCall,
LPHDRVCALL lphdConfCall,
DWORD dwTransferMode
);
LONG
TSPIAPI
TSPI_lineConditionalMediaDetection(
HDRVLINE hdLine,
DWORD dwMediaModes,
LPLINECALLPARAMS const lpCallParams
);
LONG
TSPIAPI
TSPI_lineDevSpecific(
DRV_REQUESTID dwRequestID,
HDRVLINE hdLine,
DWORD dwAddressID,
HDRVCALL hdCall,
LPVOID lpParams,
DWORD dwSize
);
LONG
TSPIAPI
TSPI_lineDevSpecificFeature(
DRV_REQUESTID dwRequestID,
HDRVLINE hdLine,
DWORD dwFeature,
LPVOID lpParams,
DWORD dwSize
);
#if (TAPI_CURRENT_VERSION >= 0x00020000)
LONG
TSPIAPI
TSPI_lineDial(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCWSTR lpszDestAddress,
DWORD dwCountryCode
);
#else
LONG
TSPIAPI
TSPI_lineDial(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCSTR lpszDestAddress,
DWORD dwCountryCode
);
#endif
LONG
TSPIAPI
TSPI_lineDrop(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCSTR lpsUserUserInfo,
DWORD dwSize
);
LONG
TSPIAPI
TSPI_lineDropOnClose( // TSPI v1.4
HDRVCALL hdCall
);
LONG
TSPIAPI
TSPI_lineDropNoOwner( // TSPI v1.4
HDRVCALL hdCall
);
LONG
TSPIAPI
TSPI_lineForward(
DRV_REQUESTID dwRequestID,
HDRVLINE hdLine,
DWORD bAllAddresses,
DWORD dwAddressID,
LPLINEFORWARDLIST const lpForwardList,
DWORD dwNumRingsNoAnswer,
HTAPICALL htConsultCall,
LPHDRVCALL lphdConsultCall,
LPLINECALLPARAMS const lpCallParams
);
#if (TAPI_CURRENT_VERSION >= 0x00020000)
LONG
TSPIAPI
TSPI_lineGatherDigits(
HDRVCALL hdCall,
DWORD dwEndToEndID,
DWORD dwDigitModes,
LPWSTR lpsDigits,
DWORD dwNumDigits,
LPCWSTR lpszTerminationDigits,
DWORD dwFirstDigitTimeout,
DWORD dwInterDigitTimeout
);
#else
LONG
TSPIAPI
TSPI_lineGatherDigits(
HDRVCALL hdCall,
DWORD dwEndToEndID,
DWORD dwDigitModes,
LPSTR lpsDigits,
DWORD dwNumDigits,
LPCSTR lpszTerminationDigits,
DWORD dwFirstDigitTimeout,
DWORD dwInterDigitTimeout
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -