lineMakeCallW 函数 (tapi.h)

lineMakeCall 函数将指定行上的调用置于指定的目标地址。 (可选)如果请求了默认调用设置参数之外的任何参数,则可以指定调用参数。

语法

LONG lineMakeCallW(
  HLINE                  hLine,
  LPHCALL                lphCall,
  LPCWSTR                lpszDestAddress,
  DWORD                  dwCountryCode,
  LPLINECALLPARAMS const lpCallParams
);

参数

hLine

要发起调用的打开行设备的句柄。

lphCall

指向 HCALL 句柄的指针。 该句柄仅在应用程序收到 LINE_REPLY 消息后有效,指示 lineMakeCall 函数成功完成。 使用此句柄在调用呼叫的其他电话操作时标识呼叫。 应用程序最初是此调用的唯一所有者。 如果函数返回错误(由答复消息同步或异步),则此句柄无效。

lpszDestAddress

指向目标地址的指针。 这遵循标准可拨号号码格式。 对于非拨号地址(与热电话一样),或者使用 lineDial执行所有拨号时,可以 NULL。 在后一种情况下,lineMakeCall 分配一个可用的呼叫外观,该外观通常保留在 拨号 状态,直到拨号开始。 具有反复用功能的服务提供商可以允许应用程序一次指定多个地址。

dwCountryCode

被调用方的国家/地区代码。 如果指定了值 0,则实现将使用默认值。

lpCallParams

指向 LINECALLPARAMS 结构的指针。 此结构允许应用程序指定它希望如何设置调用。 如果指定 NULL,则会建立默认的 3.1 kHz 语音呼叫,并选中该行上的任意发源地址。 此结构允许应用程序选择调用的持有者模式、数据速率、预期媒体模式、发起地址、阻止调用方 ID 信息和拨号参数等元素。

返回值

如果函数异步完成,则返回正请求标识符;如果发生错误,则返回负错误号。 如果函数成功,则 LINE_REPLY dwParam2 消息的 参数为零;如果发生错误,则为负错误号。 可能的返回值为:

LINEERR_ADDRESSBLOCKED、LINEERR_INVALLINEHANDLE、LINEERR_BEARERMODEUNAVAIL、LINEERR_INVALLINESTATE、LINEERR_CALLUNAVAIL、LINEERR_INVALMEDIAMODE、LINEERR_DIALBILLING、LINEERR_INVALPARAM、LINEERR_DIALDIALTONE、LINEERR_INVALPOINTER、LINEERR_DIALPROMPT、LINEERR_INVALRATE、LINEERR_DIALQUIET、LINEERR_NOMEM、LINEERR_INUSE、LINEERR_OPERATIONFAILED、LINEERR_INVALADDRESS、LINEERR_OPERATIONUNAVAIL、LINEERR_INVALADDRESSID、LINEERR_RATEUNAVAIL、LINEERR_INVALADDRESSMODE、LINEERR_RESOURCEUNAVAIL、LINEERR_INVALBEARERMODE、LINEERR_STRUCTURETOOSMALL、LINEERR_INVALCALLPARAMS、LINEERR_UNINITIALIZED、LINEERR_INVALCOUNTRYCODE、LINEERR_USERUSERINFOTOOBIG。

言论

如果返回LINEERR_INVALLINESTATE,则行当前不处于可以执行此操作的状态。 可以在 LINEDEVSTATUS 结构中的 dwLineFeatures 成员(类型LINEFEATURE_)中找到当前有效操作的列表。 调用 lineGetLineDevStatus 更新 LINEDEVSTATUS中的信息。 如果返回LINEERR_DIALBILLING、LINEERR_DIALQUIET、LINEERR_DIALDIALTONE或LINEERR_DIALPROMPT,则 lineMakeCall 不会执行任何操作;例如,在有问题的字符之前,没有可拨号地址,也没有挂钩开关状态已更改,等等。

拨号完成后,通常会向应用程序发送多个 LINE_CALLSTATE 消息,以通知呼叫进度。 没有一般有效的调用状态转换序列被指定,因为实际上无法保证单个固定的转换序列。 典型的序列可能导致呼叫从 拨号拨号继续环回连接。 使用非拨号线路,呼叫通常可以直接转换为 连接的 状态。

应用程序可以选择在指定的行设备上指定原始地址。 将交换机上的所有工作站建模为单行设备上的地址的服务提供商允许应用程序使用 lineMakeCall从其中任何一个工作站发起呼叫。

呼叫参数允许应用程序进行非语音呼叫或请求默认不可用的特殊呼叫设置选项。

应用程序可以使用 lineMakeCall 部分拨号,并使用 lineDial继续拨号。 有关部分拨号的详细信息,请参阅 lineDialTSPI_lineMakeCall。 若要放弃呼叫尝试,请使用 lineDrop

lineMakeCall 向应用程序返回成功回复消息后,LINE_CALLSTATE消息发送到应用程序以指示呼叫的当前状态。 此状态不一定LINECALLSTATE_DIALTONE。

此函数可能以未加密的形式通过线路发送数据;因此,有人窃听网络上可能能够读取数据。 在使用此方法之前,应考虑以明文形式发送数据的安全风险。

警告 TAPI 将在返回LINE_REPLY消息时将返回的数据写入 lphCall 引用的缓冲区。 这意味着缓冲区必须保持有效,直到返回LINE_REPLY消息;否则,可能会发生数据损坏和异常。
 

注意

tapi.h 标头将 lineMakeCall 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
目标平台 窗户
标头 tapi.h
Tapi32.lib
DLL Tapi32.dll

另请参阅

基本电话服务参考

可拨号地址

LINECALLPARAMS

LINEDEVSTATUS

LINE_CALLSTATE

LINE_REPLY

TAPI 2.2 参考概述

lineDial

lineDrop

lineGetLineDevStatus