|
|
/*++ 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) Microsoft Corporation. All rights reserved. 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 #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(HDRVMSPLINE); DECLARE_OPAQUE(HDRVDIALOGINSTANCE);
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_OPAQUE32(HTAPIDIALOGINSTANCE); DECLARE_OPAQUE32(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 //
#ifndef DONT_DECLARE_TSPI_FUNCTIONS // ;internal
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 ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineGenerateDigits( HDRVCALL hdCall, DWORD dwEndToEndID, DWORD dwDigitMode, LPCWSTR lpszDigits, DWORD dwDuration ); #else LONG TSPIAPI TSPI_lineGenerateDigits( HDRVCALL hdCall, DWORD dwEndToEndID, DWORD dwDigitMode, LPCSTR lpszDigits, DWORD dwDuration ); #endif
LONG TSPIAPI TSPI_lineGenerateTone( HDRVCALL hdCall, DWORD dwEndToEndID, DWORD dwToneMode, DWORD dwDuration, DWORD dwNumTones, LPLINEGENERATETONE const lpTones );
LONG TSPIAPI TSPI_lineGetAddressCaps( DWORD dwDeviceID, DWORD dwAddressID, DWORD dwTSPIVersion, DWORD dwExtVersion, LPLINEADDRESSCAPS lpAddressCaps );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineGetAddressID( HDRVLINE hdLine, LPDWORD lpdwAddressID, DWORD dwAddressMode, LPCWSTR lpsAddress, DWORD dwSize ); #else LONG TSPIAPI TSPI_lineGetAddressID( HDRVLINE hdLine, LPDWORD lpdwAddressID, DWORD dwAddressMode, LPCSTR lpsAddress, DWORD dwSize ); #endif
LONG TSPIAPI TSPI_lineGetAddressStatus( HDRVLINE hdLine, DWORD dwAddressID, LPLINEADDRESSSTATUS lpAddressStatus );
LONG TSPIAPI TSPI_lineGetCallAddressID( HDRVCALL hdCall, LPDWORD lpdwAddressID );
#if (TAPI_CURRENT_VERSION >= 0x00030000) LONG TSPIAPI TSPI_lineGetCallHubTracking( // TSPI v3.0 HDRVLINE hdLine, LPLINECALLHUBTRACKINGINFO lpTrackingInfo ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00030000) LONG TSPIAPI TSPI_lineGetCallIDs( // TSPI v3.0 HDRVCALL hdCall, LPDWORD lpdwAddressID, LPDWORD lpdwCallID, LPDWORD lpdwRelatedCallID ); #endif
LONG TSPIAPI TSPI_lineGetCallInfo( HDRVCALL hdCall, LPLINECALLINFO lpCallInfo );
LONG TSPIAPI TSPI_lineGetCallStatus( HDRVCALL hdCall, LPLINECALLSTATUS lpCallStatus );
LONG TSPIAPI TSPI_lineGetDevCaps( DWORD dwDeviceID, DWORD dwTSPIVersion, DWORD dwExtVersion, LPLINEDEVCAPS lpLineDevCaps );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineGetDevConfig( DWORD dwDeviceID, LPVARSTRING lpDeviceConfig, LPCWSTR lpszDeviceClass ); #else LONG TSPIAPI TSPI_lineGetDevConfig( DWORD dwDeviceID, LPVARSTRING lpDeviceConfig, LPCSTR lpszDeviceClass ); #endif
LONG TSPIAPI TSPI_lineGetExtensionID( DWORD dwDeviceID, DWORD dwTSPIVersion, LPLINEEXTENSIONID lpExtensionID );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineGetIcon( DWORD dwDeviceID, LPCWSTR lpszDeviceClass, LPHICON lphIcon ); #else LONG TSPIAPI TSPI_lineGetIcon( DWORD dwDeviceID, LPCSTR lpszDeviceClass, LPHICON lphIcon ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineGetID( HDRVLINE hdLine, DWORD dwAddressID, HDRVCALL hdCall, DWORD dwSelect, LPVARSTRING lpDeviceID, LPCWSTR lpszDeviceClass, HANDLE hTargetProcess // TSPI v2.0 ); #else LONG TSPIAPI TSPI_lineGetID( HDRVLINE hdLine, DWORD dwAddressID, HDRVCALL hdCall, DWORD dwSelect, LPVARSTRING lpDeviceID, LPCSTR lpszDeviceClass ); #endif
LONG TSPIAPI TSPI_lineGetLineDevStatus( HDRVLINE hdLine, LPLINEDEVSTATUS lpLineDevStatus );
LONG TSPIAPI TSPI_lineGetNumAddressIDs( HDRVLINE hdLine, LPDWORD lpdwNumAddressIDs );
LONG TSPIAPI TSPI_lineHold( DRV_REQUESTID dwRequestID, HDRVCALL hdCall );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineMakeCall( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, HTAPICALL htCall, LPHDRVCALL lphdCall, LPCWSTR lpszDestAddress, DWORD dwCountryCode, LPLINECALLPARAMS const lpCallParams ); #else LONG TSPIAPI TSPI_lineMakeCall( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, HTAPICALL htCall, LPHDRVCALL lphdCall, LPCSTR lpszDestAddress, DWORD dwCountryCode, LPLINECALLPARAMS const lpCallParams ); #endif
LONG TSPIAPI TSPI_lineMonitorDigits( HDRVCALL hdCall, DWORD dwDigitModes );
LONG TSPIAPI TSPI_lineMonitorMedia( HDRVCALL hdCall, DWORD dwMediaModes );
LONG TSPIAPI TSPI_lineMonitorTones( HDRVCALL hdCall, DWORD dwToneListID, LPLINEMONITORTONE const lpToneList, DWORD dwNumEntries );
LONG TSPIAPI TSPI_lineNegotiateExtVersion( DWORD dwDeviceID, DWORD dwTSPIVersion, DWORD dwLowVersion, DWORD dwHighVersion, LPDWORD lpdwExtVersion );
LONG TSPIAPI TSPI_lineNegotiateTSPIVersion( DWORD dwDeviceID, DWORD dwLowVersion, DWORD dwHighVersion, LPDWORD lpdwTSPIVersion );
LONG TSPIAPI TSPI_lineOpen( DWORD dwDeviceID, HTAPILINE htLine, LPHDRVLINE lphdLine, DWORD dwTSPIVersion, LINEEVENT lpfnEventProc );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_linePark( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, DWORD dwParkMode, LPCWSTR lpszDirAddress, LPVARSTRING lpNonDirAddress ); #else LONG TSPIAPI TSPI_linePark( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, DWORD dwParkMode, LPCSTR lpszDirAddress, LPVARSTRING lpNonDirAddress ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_linePickup( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwAddressID, HTAPICALL htCall, LPHDRVCALL lphdCall, LPCWSTR lpszDestAddress, LPCWSTR lpszGroupID ); #else LONG TSPIAPI TSPI_linePickup( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwAddressID, HTAPICALL htCall, LPHDRVCALL lphdCall, LPCSTR lpszDestAddress, LPCSTR lpszGroupID ); #endif
LONG TSPIAPI TSPI_linePrepareAddToConference( DRV_REQUESTID dwRequestID, HDRVCALL hdConfCall, HTAPICALL htConsultCall, LPHDRVCALL lphdConsultCall, LPLINECALLPARAMS const lpCallParams );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineRedirect( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, LPCWSTR lpszDestAddress, DWORD dwCountryCode ); #else LONG TSPIAPI TSPI_lineRedirect( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, LPCSTR lpszDestAddress, DWORD dwCountryCode ); #endif
LONG TSPIAPI TSPI_lineReleaseUserUserInfo( // TSPI v1.4 DRV_REQUESTID dwRequestID, HDRVCALL hdCall );
LONG TSPIAPI TSPI_lineRemoveFromConference( DRV_REQUESTID dwRequestID, HDRVCALL hdCall );
LONG TSPIAPI TSPI_lineSecureCall( DRV_REQUESTID dwRequestID, HDRVCALL hdCall );
LONG TSPIAPI TSPI_lineSelectExtVersion( HDRVLINE hdLine, DWORD dwExtVersion );
LONG TSPIAPI TSPI_lineSendUserUserInfo( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, LPCSTR lpsUserUserInfo, DWORD dwSize );
LONG TSPIAPI TSPI_lineSetAppSpecific( HDRVCALL hdCall, DWORD dwAppSpecific );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineSetCallData( // TSPI v2.0 DRV_REQUESTID dwRequestID, HDRVCALL hdCall, LPVOID lpCallData, DWORD dwSize ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00030000) LONG TSPIAPI TSPI_lineSetCallHubTracking( // TSPI v3.0 HDRVLINE hdLine, LPLINECALLHUBTRACKINGINFO lpTrackingInfo ); #endif
LONG TSPIAPI TSPI_lineSetCallParams( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, DWORD dwBearerMode, DWORD dwMinRate, DWORD dwMaxRate, LPLINEDIALPARAMS const lpDialParams );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineSetCallQualityOfService( // TSPI v2.0 DRV_REQUESTID dwRequestID, HDRVCALL hdCall, LPVOID lpSendingFlowspec, DWORD dwSendingFlowspecSize, LPVOID lpReceivingFlowspec, DWORD dwReceivingFlowspecSize );
LONG TSPIAPI TSPI_lineSetCallTreatment( // TSPI v2.0 DRV_REQUESTID dwRequestID, HDRVCALL hdCall, DWORD dwTreatment ); #endif
LONG TSPIAPI TSPI_lineSetCurrentLocation( // TSPI v1.4 DWORD dwLocation );
LONG TSPIAPI TSPI_lineSetDefaultMediaDetection( HDRVLINE hdLine, DWORD dwMediaModes );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineSetDevConfig( DWORD dwDeviceID, LPVOID const lpDeviceConfig, DWORD dwSize, LPCWSTR lpszDeviceClass ); #else LONG TSPIAPI TSPI_lineSetDevConfig( DWORD dwDeviceID, LPVOID const lpDeviceConfig, DWORD dwSize, LPCSTR lpszDeviceClass ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineSetLineDevStatus( // TSPI v2.0 DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwStatusToChange, DWORD fStatus ); #endif
LONG TSPIAPI TSPI_lineSetMediaControl( HDRVLINE hdLine, DWORD dwAddressID, HDRVCALL hdCall, DWORD dwSelect, LPLINEMEDIACONTROLDIGIT const lpDigitList, DWORD dwDigitNumEntries, LPLINEMEDIACONTROLMEDIA const lpMediaList, DWORD dwMediaNumEntries, LPLINEMEDIACONTROLTONE const lpToneList, DWORD dwToneNumEntries, LPLINEMEDIACONTROLCALLSTATE const lpCallStateList, DWORD dwCallStateNumEntries );
LONG TSPIAPI TSPI_lineSetMediaMode( HDRVCALL hdCall, DWORD dwMediaMode );
LONG TSPIAPI TSPI_lineSetStatusMessages( HDRVLINE hdLine, DWORD dwLineStates, DWORD dwAddressStates );
LONG TSPIAPI TSPI_lineSetTerminal( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwAddressID, HDRVCALL hdCall, DWORD dwSelect, DWORD dwTerminalModes, DWORD dwTerminalID, DWORD bEnable );
LONG TSPIAPI TSPI_lineSetupConference( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, HDRVLINE hdLine, HTAPICALL htConfCall, LPHDRVCALL lphdConfCall, HTAPICALL htConsultCall, LPHDRVCALL lphdConsultCall, DWORD dwNumParties, LPLINECALLPARAMS const lpCallParams );
LONG TSPIAPI TSPI_lineSetupTransfer( DRV_REQUESTID dwRequestID, HDRVCALL hdCall, HTAPICALL htConsultCall, LPHDRVCALL lphdConsultCall, LPLINECALLPARAMS const lpCallParams );
LONG TSPIAPI TSPI_lineSwapHold( DRV_REQUESTID dwRequestID, HDRVCALL hdActiveCall, HDRVCALL hdHeldCall );
LONG TSPIAPI TSPI_lineUncompleteCall( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwCompletionID );
LONG TSPIAPI TSPI_lineUnhold( DRV_REQUESTID dwRequestID, HDRVCALL hdCall );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_lineUnpark( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwAddressID, HTAPICALL htCall, LPHDRVCALL lphdCall, LPCWSTR lpszDestAddress ); #else LONG TSPIAPI TSPI_lineUnpark( DRV_REQUESTID dwRequestID, HDRVLINE hdLine, DWORD dwAddressID, HTAPICALL htCall, LPHDRVCALL lphdCall, LPCSTR lpszDestAddress ); #endif
LONG TSPIAPI TSPI_phoneClose( HDRVPHONE hdPhone );
LONG TSPIAPI TSPI_phoneDevSpecific( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, LPVOID lpParams, DWORD dwSize );
LONG TSPIAPI TSPI_phoneGetButtonInfo( HDRVPHONE hdPhone, DWORD dwButtonLampID, LPPHONEBUTTONINFO lpButtonInfo );
LONG TSPIAPI TSPI_phoneGetData( HDRVPHONE hdPhone, DWORD dwDataID, LPVOID lpData, DWORD dwSize );
LONG TSPIAPI TSPI_phoneGetDevCaps( DWORD dwDeviceID, DWORD dwTSPIVersion, DWORD dwExtVersion, LPPHONECAPS lpPhoneCaps );
LONG TSPIAPI TSPI_phoneGetDisplay( HDRVPHONE hdPhone, LPVARSTRING lpDisplay );
LONG TSPIAPI TSPI_phoneGetExtensionID( DWORD dwDeviceID, DWORD dwTSPIVersion, LPPHONEEXTENSIONID lpExtensionID );
LONG TSPIAPI TSPI_phoneGetGain( HDRVPHONE hdPhone, DWORD dwHookSwitchDev, LPDWORD lpdwGain );
LONG TSPIAPI TSPI_phoneGetHookSwitch( HDRVPHONE hdPhone, LPDWORD lpdwHookSwitchDevs );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_phoneGetIcon( DWORD dwDeviceID, LPCWSTR lpszDeviceClass, LPHICON lphIcon ); #else LONG TSPIAPI TSPI_phoneGetIcon( DWORD dwDeviceID, LPCSTR lpszDeviceClass, LPHICON lphIcon ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_phoneGetID( HDRVPHONE hdPhone, LPVARSTRING lpDeviceID, LPCWSTR lpszDeviceClass, HANDLE hTargetProcess // TSPI v2.0 ); #else LONG TSPIAPI TSPI_phoneGetID( HDRVPHONE hdPhone, LPVARSTRING lpDeviceID, LPCSTR lpszDeviceClass ); #endif
LONG TSPIAPI TSPI_phoneGetLamp( HDRVPHONE hdPhone, DWORD dwButtonLampID, LPDWORD lpdwLampMode );
LONG TSPIAPI TSPI_phoneGetRing( HDRVPHONE hdPhone, LPDWORD lpdwRingMode, LPDWORD lpdwVolume );
LONG TSPIAPI TSPI_phoneGetStatus( HDRVPHONE hdPhone, LPPHONESTATUS lpPhoneStatus );
LONG TSPIAPI TSPI_phoneGetVolume( HDRVPHONE hdPhone, DWORD dwHookSwitchDev, LPDWORD lpdwVolume );
LONG TSPIAPI TSPI_phoneNegotiateExtVersion( DWORD dwDeviceID, DWORD dwTSPIVersion, DWORD dwLowVersion, DWORD dwHighVersion, LPDWORD lpdwExtVersion );
LONG TSPIAPI TSPI_phoneNegotiateTSPIVersion( DWORD dwDeviceID, DWORD dwLowVersion, DWORD dwHighVersion, LPDWORD lpdwTSPIVersion );
LONG TSPIAPI TSPI_phoneOpen( DWORD dwDeviceID, HTAPIPHONE htPhone, LPHDRVPHONE lphdPhone, DWORD dwTSPIVersion, PHONEEVENT lpfnEventProc );
LONG TSPIAPI TSPI_phoneSelectExtVersion( HDRVPHONE hdPhone, DWORD dwExtVersion );
LONG TSPIAPI TSPI_phoneSetButtonInfo( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwButtonLampID, LPPHONEBUTTONINFO const lpButtonInfo );
LONG TSPIAPI TSPI_phoneSetData( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwDataID, LPVOID const lpData, DWORD dwSize );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_phoneSetDisplay( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwRow, DWORD dwColumn, LPCWSTR lpsDisplay, DWORD dwSize ); #else LONG TSPIAPI TSPI_phoneSetDisplay( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwRow, DWORD dwColumn, LPCSTR lpsDisplay, DWORD dwSize ); #endif
LONG TSPIAPI TSPI_phoneSetGain( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwHookSwitchDev, DWORD dwGain );
LONG TSPIAPI TSPI_phoneSetHookSwitch( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwHookSwitchDevs, DWORD dwHookSwitchMode );
LONG TSPIAPI TSPI_phoneSetLamp( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwButtonLampID, DWORD dwLampMode );
LONG TSPIAPI TSPI_phoneSetRing( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwRingMode, DWORD dwVolume );
LONG TSPIAPI TSPI_phoneSetStatusMessages( HDRVPHONE hdPhone, DWORD dwPhoneStates, DWORD dwButtonModes, DWORD dwButtonStates );
LONG TSPIAPI TSPI_phoneSetVolume( DRV_REQUESTID dwRequestID, HDRVPHONE hdPhone, DWORD dwHookSwitchDev, DWORD dwVolume );
LONG TSPIAPI TSPI_providerConfig( HWND hwndOwner, DWORD dwPermanentProviderID );
LONG TSPIAPI TSPI_providerCreateLineDevice( // TSPI v1.4 DWORD_PTR dwTempID, DWORD dwDeviceID );
LONG TSPIAPI TSPI_providerCreatePhoneDevice( // TSPI v1.4 DWORD_PTR dwTempID, DWORD dwDeviceID );
LONG TSPIAPI TSPI_providerEnumDevices( // TSPI v1.4 DWORD dwPermanentProviderID, LPDWORD lpdwNumLines, LPDWORD lpdwNumPhones, HPROVIDER hProvider, LINEEVENT lpfnLineCreateProc, PHONEEVENT lpfnPhoneCreateProc );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_providerFreeDialogInstance( // TSPI v2.0 HDRVDIALOGINSTANCE hdDlgInst );
LONG TSPIAPI TSPI_providerGenericDialogData( // TSPI v2.0 DWORD_PTR dwObjectID, DWORD dwObjectType, LPVOID lpParams, DWORD dwSize ); #endif
LONG TSPIAPI TSPI_providerInit( DWORD dwTSPIVersion, DWORD dwPermanentProviderID, DWORD dwLineDeviceIDBase, DWORD dwPhoneDeviceIDBase, DWORD_PTR dwNumLines, DWORD_PTR dwNumPhones, ASYNC_COMPLETION lpfnCompletionProc #if (TAPI_CURRENT_VERSION >= 0x00020000) , LPDWORD lpdwTSPIOptions // TSPI v2.0 #endif );
LONG TSPIAPI TSPI_providerInstall( HWND hwndOwner, DWORD dwPermanentProviderID );
LONG TSPIAPI TSPI_providerRemove( HWND hwndOwner, DWORD dwPermanentProviderID );
LONG TSPIAPI TSPI_providerShutdown( DWORD dwTSPIVersion #if (TAPI_CURRENT_VERSION >= 0x00020000) , DWORD dwPermanentProviderID // TSPI v2.0 #endif );
#if (TAPI_CURRENT_VERSION >= 0x00020000) LONG TSPIAPI TSPI_providerUIIdentify( // TSPI v2.0 LPWSTR lpszUIDLLName ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00030000) LONG TSPIAPI TSPI_lineMSPIdentify( DWORD dwDeviceID, GUID * pCLSID ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00030000) LONG TSPIAPI TSPI_lineCreateMSPInstance( HDRVLINE hdLine, DWORD dwAddressID, HTAPIMSPLINE htMSPLine, LPHDRVMSPLINE lphdMSPLine );
LONG TSPIAPI TSPI_lineCloseMSPInstance( HDRVMSPLINE hdMSPLine );
LONG TSPIAPI TSPI_lineReceiveMSPData( HDRVLINE hdLine, HDRVCALL hdCall, HDRVMSPLINE hdMSPLine, LPVOID pBuffer, DWORD dwSize ); #endif
#if (TAPI_CURRENT_VERSION >= 0x00020000) // // The following function prototypes pertain // to a service provider's UI module //
LONG TSPIAPI TUISPI_lineConfigDialog( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, DWORD dwDeviceID, HWND hwndOwner, LPCWSTR lpszDeviceClass );
LONG TSPIAPI TUISPI_lineConfigDialogEdit( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, DWORD dwDeviceID, HWND hwndOwner, LPCWSTR lpszDeviceClass, LPVOID const lpDeviceConfigIn, DWORD dwSize, LPVARSTRING lpDeviceConfigOut );
LONG TSPIAPI TUISPI_phoneConfigDialog( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, DWORD dwDeviceID, HWND hwndOwner, LPCWSTR lpszDeviceClass );
LONG TSPIAPI TUISPI_providerConfig( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, HWND hwndOwner, DWORD dwPermanentProviderID );
LONG TSPIAPI TUISPI_providerGenericDialog( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, HTAPIDIALOGINSTANCE htDlgInst, LPVOID lpParams, DWORD dwSize, HANDLE hEvent );
LONG TSPIAPI TUISPI_providerGenericDialogData( // TSPI v2.0 HTAPIDIALOGINSTANCE htDlgInst, LPVOID lpParams, DWORD dwSize );
LONG TSPIAPI TUISPI_providerInstall( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, HWND hwndOwner, DWORD dwPermanentProviderID );
LONG TSPIAPI TUISPI_providerRemove( // TSPI v2.0 TUISPIDLLCALLBACK lpfnUIDLLCallback, HWND hwndOwner, DWORD dwPermanentProviderID );
#else
// // The following were obsoleted by the above (but are needed to build 1.4 SPs) //
LONG TSPIAPI TSPI_lineConfigDialog( DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass );
LONG TSPIAPI TSPI_lineConfigDialogEdit( DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass, LPVOID const lpDeviceConfigIn, DWORD dwSize, LPVARSTRING lpDeviceConfigOut );
LONG TSPIAPI TSPI_phoneConfigDialog( DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass );
#endif
#endif // ;internal
#if (TAPI_CURRENT_VERSION < 0x00020000)
// // The following macros are the ordinal numbers of the exported tspi functions //
#define TSPI_PROC_BASE 500
#define TSPI_LINEACCEPT (TSPI_PROC_BASE + 0) #define TSPI_LINEADDTOCONFERENCE (TSPI_PROC_BASE + 1) #define TSPI_LINEANSWER (TSPI_PROC_BASE + 2) #define TSPI_LINEBLINDTRANSFER (TSPI_PROC_BASE + 3) #define TSPI_LINECLOSE (TSPI_PROC_BASE + 4) #define TSPI_LINECLOSECALL (TSPI_PROC_BASE + 5) #define TSPI_LINECOMPLETECALL (TSPI_PROC_BASE + 6) #define TSPI_LINECOMPLETETRANSFER (TSPI_PROC_BASE + 7) #define TSPI_LINECONDITIONALMEDIADETECTION (TSPI_PROC_BASE + 8) #define TSPI_LINECONFIGDIALOG (TSPI_PROC_BASE + 9) #define TSPI_LINEDEVSPECIFIC (TSPI_PROC_BASE + 10) #define TSPI_LINEDEVSPECIFICFEATURE (TSPI_PROC_BASE + 11) #define TSPI_LINEDIAL (TSPI_PROC_BASE + 12) #define TSPI_LINEDROP (TSPI_PROC_BASE + 13) #define TSPI_LINEFORWARD (TSPI_PROC_BASE + 14) #define TSPI_LINEGATHERDIGITS (TSPI_PROC_BASE + 15) #define TSPI_LINEGENERATEDIGITS (TSPI_PROC_BASE + 16) #define TSPI_LINEGENERATETONE (TSPI_PROC_BASE + 17) #define TSPI_LINEGETADDRESSCAPS (TSPI_PROC_BASE + 18) #define TSPI_LINEGETADDRESSID (TSPI_PROC_BASE + 19) #define TSPI_LINEGETADDRESSSTATUS (TSPI_PROC_BASE + 20) #define TSPI_LINEGETCALLADDRESSID (TSPI_PROC_BASE + 21) #define TSPI_LINEGETCALLINFO (TSPI_PROC_BASE + 22) #define TSPI_LINEGETCALLSTATUS (TSPI_PROC_BASE + 23) #define TSPI_LINEGETDEVCAPS (TSPI_PROC_BASE + 24) #define TSPI_LINEGETDEVCONFIG (TSPI_PROC_BASE + 25) #define TSPI_LINEGETEXTENSIONID (TSPI_PROC_BASE + 26) #define TSPI_LINEGETICON (TSPI_PROC_BASE + 27) #define TSPI_LINEGETID (TSPI_PROC_BASE + 28) #define TSPI_LINEGETLINEDEVSTATUS (TSPI_PROC_BASE + 29) #define TSPI_LINEGETNUMADDRESSIDS (TSPI_PROC_BASE + 30) #define TSPI_LINEHOLD (TSPI_PROC_BASE + 31) #define TSPI_LINEMAKECALL (TSPI_PROC_BASE + 32) #define TSPI_LINEMONITORDIGITS (TSPI_PROC_BASE + 33) #define TSPI_LINEMONITORMEDIA (TSPI_PROC_BASE + 34) #define TSPI_LINEMONITORTONES (TSPI_PROC_BASE + 35) #define TSPI_LINENEGOTIATEEXTVERSION (TSPI_PROC_BASE + 36) #define TSPI_LINENEGOTIATETSPIVERSION (TSPI_PROC_BASE + 37) #define TSPI_LINEOPEN (TSPI_PROC_BASE + 38) #define TSPI_LINEPARK (TSPI_PROC_BASE + 39) #define TSPI_LINEPICKUP (TSPI_PROC_BASE + 40) #define TSPI_LINEPREPAREADDTOCONFERENCE (TSPI_PROC_BASE + 41) #define TSPI_LINEREDIRECT (TSPI_PROC_BASE + 42) #define TSPI_LINEREMOVEFROMCONFERENCE (TSPI_PROC_BASE + 43) #define TSPI_LINESECURECALL (TSPI_PROC_BASE + 44) #define TSPI_LINESELECTEXTVERSION (TSPI_PROC_BASE + 45) #define TSPI_LINESENDUSERUSERINFO (TSPI_PROC_BASE + 46) #define TSPI_LINESETAPPSPECIFIC (TSPI_PROC_BASE + 47) #define TSPI_LINESETCALLPARAMS (TSPI_PROC_BASE + 48) #define TSPI_LINESETDEFAULTMEDIADETECTION (TSPI_PROC_BASE + 49) #define TSPI_LINESETDEVCONFIG (TSPI_PROC_BASE + 50) #define TSPI_LINESETMEDIACONTROL (TSPI_PROC_BASE + 51) #define TSPI_LINESETMEDIAMODE (TSPI_PROC_BASE + 52) #define TSPI_LINESETSTATUSMESSAGES (TSPI_PROC_BASE + 53) #define TSPI_LINESETTERMINAL (TSPI_PROC_BASE + 54) #define TSPI_LINESETUPCONFERENCE (TSPI_PROC_BASE + 55) #define TSPI_LINESETUPTRANSFER (TSPI_PROC_BASE + 56) #define TSPI_LINESWAPHOLD (TSPI_PROC_BASE + 57) #define TSPI_LINEUNCOMPLETECALL (TSPI_PROC_BASE + 58) #define TSPI_LINEUNHOLD (TSPI_PROC_BASE + 59) #define TSPI_LINEUNPARK (TSPI_PROC_BASE + 60) #define TSPI_PHONECLOSE (TSPI_PROC_BASE + 61) #define TSPI_PHONECONFIGDIALOG (TSPI_PROC_BASE + 62) #define TSPI_PHONEDEVSPECIFIC (TSPI_PROC_BASE + 63) #define TSPI_PHONEGETBUTTONINFO (TSPI_PROC_BASE + 64) #define TSPI_PHONEGETDATA (TSPI_PROC_BASE + 65) #define TSPI_PHONEGETDEVCAPS (TSPI_PROC_BASE + 66) #define TSPI_PHONEGETDISPLAY (TSPI_PROC_BASE + 67) #define TSPI_PHONEGETEXTENSIONID (TSPI_PROC_BASE + 68) #define TSPI_PHONEGETGAIN (TSPI_PROC_BASE + 69) #define TSPI_PHONEGETHOOKSWITCH (TSPI_PROC_BASE + 70) #define TSPI_PHONEGETICON (TSPI_PROC_BASE + 71) #define TSPI_PHONEGETID (TSPI_PROC_BASE + 72) #define TSPI_PHONEGETLAMP (TSPI_PROC_BASE + 73) #define TSPI_PHONEGETRING (TSPI_PROC_BASE + 74) #define TSPI_PHONEGETSTATUS (TSPI_PROC_BASE + 75) #define TSPI_PHONEGETVOLUME (TSPI_PROC_BASE + 76) #define TSPI_PHONENEGOTIATEEXTVERSION (TSPI_PROC_BASE + 77) #define TSPI_PHONENEGOTIATETSPIVERSION (TSPI_PROC_BASE + 78) #define TSPI_PHONEOPEN (TSPI_PROC_BASE + 79) #define TSPI_PHONESELECTEXTVERSION (TSPI_PROC_BASE + 80) #define TSPI_PHONESETBUTTONINFO (TSPI_PROC_BASE + 81) #define TSPI_PHONESETDATA (TSPI_PROC_BASE + 82) #define TSPI_PHONESETDISPLAY (TSPI_PROC_BASE + 83) #define TSPI_PHONESETGAIN (TSPI_PROC_BASE + 84) #define TSPI_PHONESETHOOKSWITCH (TSPI_PROC_BASE + 85) #define TSPI_PHONESETLAMP (TSPI_PROC_BASE + 86) #define TSPI_PHONESETRING (TSPI_PROC_BASE + 87) #define TSPI_PHONESETSTATUSMESSAGES (TSPI_PROC_BASE + 88) #define TSPI_PHONESETVOLUME (TSPI_PROC_BASE + 89) #define TSPI_PROVIDERCONFIG (TSPI_PROC_BASE + 90) #define TSPI_PROVIDERINIT (TSPI_PROC_BASE + 91) #define TSPI_PROVIDERINSTALL (TSPI_PROC_BASE + 92) #define TSPI_PROVIDERREMOVE (TSPI_PROC_BASE + 93) #define TSPI_PROVIDERSHUTDOWN (TSPI_PROC_BASE + 94)
#define TSPI_PROVIDERENUMDEVICES (TSPI_PROC_BASE + 95) // TSPI v1.4 #define TSPI_LINEDROPONCLOSE (TSPI_PROC_BASE + 96) // TSPI v1.4 #define TSPI_LINEDROPNOOWNER (TSPI_PROC_BASE + 97) // TSPI v1.4 #define TSPI_PROVIDERCREATELINEDEVICE (TSPI_PROC_BASE + 98) // TSPI v1.4 #define TSPI_PROVIDERCREATEPHONEDEVICE (TSPI_PROC_BASE + 99) // TSPI v1.4 #define TSPI_LINESETCURRENTLOCATION (TSPI_PROC_BASE + 100) // TSPI v1.4 #define TSPI_LINECONFIGDIALOGEDIT (TSPI_PROC_BASE + 101) // TSPI v1.4 #define TSPI_LINERELEASEUSERUSERINFO (TSPI_PROC_BASE + 102) // TSPI v1.4
#define TSPI_LINEGETCALLID (TSPI_PROC_BASE + 103) // TSPI v3.0 #define TSPI_LINEGETCALLHUBTRACKING (TSPI_PROC_BASE + 104) // TSPI v3.0 #define TSPI_LINESETCALLHUBTRACKING (TSPI_PROC_BASE + 105) // TSPI v3.0 #define TSPI_LINERECEIVEMSPDATA (TSPI_PROC_BASE + 106) // TSPI v3.0 #define TSPI_LINEMSPIDENTIFY (TSPI_PROC_BASE + 107) // TSPI v3.0 #define TSPI_LINECREATEMSPINSTANCE (TSPI_PROC_BASE + 108) // TSPI v3.0 #define TSPI_LINECLOSEMSPINSTANCE (TSPI_PROC_BASE + 109) // TSPI v3.0
#endif
#ifdef __cplusplus } /* End of extern "C" { */ #endif /* __cplusplus */
#endif // TSPI_H
|