TSPI_lineMakeCall 函数 (tspi.h)
TSPI_lineMakeCall 函数在指定行上向指定目标地址发出调用。 (可选)如果请求了除默认调用设置参数之外的任何参数,则可以指定调用参数。
语法
LONG TSPIAPI TSPI_lineMakeCall(
DRV_REQUESTID dwRequestID,
HDRVLINE hdLine,
HTAPICALL htCall,
LPHDRVCALL lphdCall,
LPCWSTR lpszDestAddress,
DWORD dwCountryCode,
LPLINECALLPARAMS const lpCallParams
);
参数
dwRequestID
异步请求的标识符。
hdLine
要发起新调用的行的句柄。
htCall
新调用的 TAPI 句柄。 服务提供商必须保存此内容,并在对 LINEEVENT 过程报告调用事件的所有后续调用中使用它。
lphdCall
指向调用句柄的指针。 在此过程返回之前,服务提供商必须使用调用的句柄填充此位置。 如果函数导致错误,TAPI 将忽略此句柄。
lpszDestAddress
指向以 null 结尾的 Unicode 字符串的指针,该字符串指定目标地址。 这遵循标准可拨号号码格式。 对于非拨号地址,可以将此指针指定为 NULL, (与热电话一样,该指针始终自动连接到预定义号码) 或使用 TSPI_lineDial执行所有拨号时。 在后一种情况下, TSPI_lineMakeCall 分配一个可用的呼叫外观,该外观通常在拨号开始前保持 拨号 状态。 具有反多路复用功能的服务提供商可以允许应用程序一次指定多个地址。
dwCountryCode
被调用方所在的国家或地区代码。 如果指定值 0,则实现将使用默认值。
lpCallParams
指向 LINECALLPARAMS 结构的指针。 此结构允许 TAPI 指定它希望如何设置呼叫。 如果指定 NULL,则会建立默认的 3.1kHz 语音呼叫,并选择线路上的任意发起地址。 此结构选择诸如呼叫的持有者模式、数据速率、预期的媒体类型、发起地址、呼叫方 ID 信息的阻止和拨号参数等元素。
返回值
如果发生错误,则返回 dwRequestID 或错误号。 如果函数成功,相应ASYNC_COMPLETION的 lResult 实际参数为零;如果发生错误,则为错误号。 可能的返回值如下所示:
LINEERR_ADDRESSBLOCKED、LINEERR_INVALLINESTATE、LINEERR_BEARERMODEUNAVAIL、LINEERR_INVALRATE、LINEERR_CALLUNAVAIL、LINEERR_INVALLINEHANDLE、LINEERR_DIALBILLING、LINEERR_INVALADDRESS、LINEERR_DIALQUIET、LINEERR_INVALADDRESSID、LINEERR_DIALDIALTONE、LINEERR_INVALCALLPARAMS、LINEERR_DIALPROMPT、LINEERR_NOMEM、LINEERR_INUSE、LINEERR_OPERATIONUNAVAIL、LINEERR_INVALADDRESSMODE、LINEERR_OPERATIONFAILED、LINEERR_INVALBEARERMODE、LINEERR_RESOURCEUNAVAIL、LINEERR_INVALCOUNTRYCODE、LINEERR_RATEUNAVAIL、LINEERR_INVALMEDIAMODE、LINEERR_USERUSERINFOTOOBIG。
注解
如果行当前不处于可执行此操作的状态,则服务提供程序将返回LINEERR_INVALLINESTATE。 可以在 LINEDEVSTATUS 结构中 LINEFEATURE) 的 dwLineFeatures 成员 (中找到当前有效操作的列表。 (调用 TSPI_lineGetLineDevStatus 更新 LINEDEVSTATUS.) 中的信息
如果服务提供商返回LINEERR_DIALBILLING、LINEERR_DIALQUIET、LINEERR_DIALDIALTONE或LINEERR_DIALPROMPT,则它不应执行 TSPI_lineMakeCall所执行的任何操作。 例如,没有部分拨号,也没有离开。 这是因为服务提供商应先预先扫描编号,以查找不受支持的字符。
TSPI_lineMakeCall向应用程序返回 SUCCESS 回复回调消息后,服务提供商必须将LINE_CALLSTATE消息发送到传入TSPI_lineOpen的 lpfnEventProc,以通知 TAPI 有关调用进度。 典型的报告序列可以是拨号音、拨号、继续、回拨和 已连接;报告的第一个状态不一定LINECALLSTATE_DIALTONE。 服务提供商选择报告这些状态中的多少个。 建议发送尽可能多的内容,以便应用程序可以采取适当的操作。
服务提供商最初对新调用进行媒体监视,至少针对在线路上监视的一组媒体类型执行媒体监视。
如果拨号字符串为 NULL,则服务提供商将线路设置为基于 Comm 的服务提供商的 拨号状态 (,这将涉及 ATD) 并发送指示LINECALLSTATE_DIALTONE的呼叫状态消息。
如果拨号字符串以“;”结尾, (分号) ,服务提供商将拨打部分号码并发送LINECALLSTATE_DIALING消息。 此调用是通过调用 TSPI_lineDial 来完成的。
如果拨号字符串包含服务提供程序不支持的 W、@、$、?) (字符,则服务提供商必须扫描拨号字符串并同步返回 () 对应于第一个无效字符的错误。
如果设置了LINECALLPARAMFLAGS_IDLE标志,则服务提供商必须检查当前线路状态, (与) 脱钩和感知拨号音等效。 如果设置了此 IDLE 标志并且没有拨号音,则函数将失败并显示错误LINEERR_CALLUNAVAIL。 如果未设置 IDLE 标志,或者有拨号音,则拨号可以继续。
此函数不同于相应的 TAPI 函数,因为它遵循 TSPI 模型,以开始调用的生存期。 TAPI 和服务提供商交换不透明的句柄,表示相互调用。 此外,允许服务提供商在从此过程返回之前对新调用执行回调。 在任何情况下,服务提供商还必须将其返回的句柄视为“无效”,直到匹配 ASYNC_COMPLETION 消息报告成功。 它不得为新调用发出任何 LINEEVENT 消息,也不得将其包含在该行的消息或状态数据结构的呼叫计数中。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | tspi.h |