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 |
另请参阅
TSPI_lineConditionalMediaDetection