TSPI_lineMonitorMedia 函数 (tspi.h)

TSPI_lineMonitorMedia 函数启用和禁用对指定调用的媒体类型的检测。 检测到媒体类型时,会向 TAPI 发送 LINE_MONITORMEDIA 消息。

语法

LONG TSPIAPI TSPI_lineMonitorMedia(
  HDRVCALL hdCall,
  DWORD    dwMediaModes
);

参数

hdCall

要为其设置媒体监视的调用的句柄。 hdCall 的调用状态可以是除空闲之外的任何状态。

dwMediaModes

要监视的媒体类型。 dwMediaModes 参数可以具有LINEMEDIAMODE_常量之一。

值为 0 将取消所有媒体类型监视。

返回值

如果函数成功,则返回零;如果发生错误,则返回错误号。 可能的返回值如下所示:

LINEERR_INVALCALLHANDLE、LINEERR_OPERATIONUNAVAIL、LINEERR_INVALCALLSTATE、LINEERR_OPERATIONFAILED、LINEERR_INVALMEDIAMODE、LINEERR_RESOURCEUNAVAIL、LINEERR_NOMEM。

注解

如果要监视的媒体类型列表包含无效信息,则服务提供商将返回LINEERR_INVALMEDIAMODE。

当媒体类型监视已正确启动时(而不是媒体类型监视已终止时),此函数返回零 (成功) 。 给定媒体类型的媒体监视一直有效,直到使用将媒体类型设置为零的 dwMediaModes 参数调用TSPI_lineMonitorMedia显式禁用该监视,或者直到调用转换为空闲

TSPI_lineMonitorMedia 主要是事件报告机制。 如 LINECALLINFO 中所示,呼叫的媒体类型不受服务提供商对媒体类型的检测的影响。 只有 TAPI 或客户端应用程序可以使用 TSPI_lineSetMediaMode 更改呼叫的指示媒体类型。 特定媒体类型的实际使用通过单独的媒体流 API (进行,例如 Comm 或 WAVE) 。

服务提供商为新的呼叫外观执行的默认媒体监视对应于 TSPI_lineSetDefaultMediaDetection指定的所有媒体类型的联合。 建立新调用后不久,TAPI 通常会调用 TSPI_lineMonitorMedia ,以减少针对此调用检测到的媒体类型集,并将其报告给呼叫的客户端应用程序所需的所有媒体类型的联合。

当呼叫空闲时,服务提供商必须取消媒体监视。 TAPI 必须计算所有客户端所需的媒体类型的联合,并将结果传递给此函数。 服务提供商使用 TAPI 传递给此函数的集。

尽管可以在任何调用状态下调用此函数,但通常只能在调用处于特定调用状态时检测调用的媒体类型。 这些状态可以特定于设备。 例如,在 ISDN 中,消息可以在媒体流存在之前指示媒体流的媒体类型。 同样,独特的响铃或有关呼叫的被调用 ID 信息可用于标识呼叫的媒体类型。 否则,可能需要接听呼叫 (处于 连接 状态的呼叫) ,以允许服务提供商通过筛选媒体流来确定呼叫的媒体类型。 由于筛选呼叫的媒体流意味着计算开销,因此 TAPI 通常使用此过程在不需要时禁用媒体监视。

由于 TSPI_lineMonitorMedia 启用的媒体模式检测是作为调用媒体流的只读操作实现的,因此不会中断。 设置 TSPI_lineMonitorMedia后,不会在线路上发送任何信号。

对于传递的媒体类型,TAPI 保证没有设置保留位。 服务提供商必须对媒体类型执行任何进一步的有效性检查,例如检查服务提供商是否确实支持任何媒体类型。

要求

要求
目标平台 Windows
标头 tspi.h

另请参阅

LINECALLINFO

LINEDEVCAPS

LINEMEDIAMODE_常量

LINE_MONITORMEDIA

TSPI_lineConditionalMediaDetection

TSPI_lineGetDevCaps

TSPI_lineSetDefaultMediaDetection

TSPI_lineSetMediaControl

TSPI_lineSetMediaMode