TSPI_lineConditionalMediaDetection 函数 (tspi.h)

每当客户端应用程序在 lineOpen 函数调用中使用 LINEMAPPER 作为 dwDeviceID 来请求扫描行以查找支持所需媒体类型和调用参数的行时,TAPI 都会调用 TSPI_lineConditionalMediaDetection 函数。 TAPI 扫描基于所需媒体类型与当前在线路上监视的其他媒体类型的并集,使服务提供商有机会指示它是否无法同时监视所有请求的媒体类型。 如果服务提供商可以监视指示的一组媒体类型并支持 lpCallParams 中指示的功能,则它以成功指示进行答复。 它使行的活动媒体监视模式保持不变。

语法

LONG TSPIAPI TSPI_lineConditionalMediaDetection(
  HDRVLINE               hdLine,
  DWORD                  dwMediaModes,
  LPLINECALLPARAMS const lpCallParams
);

参数

hdLine

服务提供商对要设置媒体监视和参数功能的行的句柄。

dwMediaModes

媒体类型 (调用应用程序当前感兴趣的) 。 此参数使用 LINEMEDIAMODE_常量之一。

lpCallParams

指向 LINECALLPARAMS 类型的结构的指针。 它描述了线路设备应能够提供的调用参数。 用于此测试目的 的 lpCallParams 的唯一相关字段如下:

dwBearerMode

dwMinRate

dwMaxRate

dwMediaMode

dwCallParamFlags

dwAddressMode

如果 dwAddressMode LINEADDRESSMODE_ADDRESSID,则行上的任何地址都是可以接受的。 如果 dwAddressMode 是LINEADDRESSMODE_DIALABLEADDR,指示要搜索特定源地址 (电话号码) ,或者如果是特定于提供程序的扩展,则 dwOrigAddressSize/Offset 以及它们引用的变量部件的部分也相关。 如果 dwAddressMode 是特定于提供程序的扩展,则可以在 dwDeviceSpecific 可变大小字段中包含其他信息。 所有其他字段与函数无关。

返回值

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

LINEERR_INVALLINEHANDLE、LINEERR_OPERATIONFAILED、LINEERR_NODRIVER、LINEERR_RESOURCEUNAVAIL、LINEERR_NOMEM、LINEERR_INVALMEDIAMODE、LINEERR_OPERATIONUNAVAIL。

注解

指定 LINEMAPPER 设备标识符的 TAPI lineOpen 函数通常会导致为多行设备调用此过程来搜寻合适的行,可能还会打开尚未打开的行。 成功结果表示该行适合调用应用程序的要求。

注意 TSPI 级别要求的媒体监视模式是 TAPI 级别多个应用程序要求的监视模式的并集。 因此,在此级别同时设置多个媒体类型标志是最常见的。 服务提供商必须测试以确定它是否至少支持指定的集,而不考虑当前有效的模式。 TAPI 确保 dwMediaModes 参数至少设置了一个位,并且未设置保留位。 服务提供商负责对媒体类型执行任何进一步的有效性检查,例如检查服务提供商是否支持任何媒体类型。
 
TSPI_lineConditionalMediaDetection 函数检查 LINECALLPARAMS 结构的 dwCallParamFlags 成员中设置的位,并处理以下情况:

如果将相同的位值传递给 TSPI_lineMakeCall 函数, TSPI_lineConditionalMediaDetection 函数也会返回成功。

如果设置了 SECURE、ORIGOFFHOOK 和 DESTOFFHOOK 位,并且 dwAddressMode 参数LINEADDRESSMODE_ADDRESSID,则如果可以在行上的一个或多个地址上成功,则函数将返回成功。

如果设置了 SECURE、ORIGOFFHOOK 和 DESTOFFHOOK 位,并且 dwAddressMode 参数LINEADDRESSMODE_DIALABLEADDR,则如果可以在 dwOrigAddress 参数标识的地址上成功,则函数返回成功。

服务提供程序 (返回错误,例如,LINEERR_RESOURCEUNAVAIL) 如果在调用此函数时,如果它将返回 (LINEERR_CALLUNAVAIL,则无法在指定的线路设备上发出新调用,或者LINEERR_RESOURCEUNAVAIL在打开) 行后立即调用 TSPI_lineMakeCall

TAPI 级别没有直接对应的函数。 当使用设备标识符 LINEMAPPER 调用时,此过程对应于 lineOpen 过程为每一行隐含的测试。

要求

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

另请参阅

LINECALLPARAMS

LINEMEDIAMODE_常量

TSPI_lineMakeCall