2.2.4.1.3.9 ConditionalMediaDetection

The ConditionalMediaDetection packet is transmitted from a TAPI client to a TAPI server in a remote procedure call. The function is invoked by TAPI whenever a client application uses LINEMAPPER as the dwDeviceID in an Open packet call to request that lines be scanned to find one that supports the desired media types and call parameters.

TAPI scans based on the union of the desired media type and the other media types currently being monitored on the line to give the service provider the opportunity to indicate if it cannot simultaneously monitor for all the requested media types. If the service provider can monitor for the indicated set of media types and support the capabilities that are indicated in lpCallParams, it replies with a success indication. It leaves the active media monitoring modes for the line unchanged.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Req_Func

Reserved1

hLine

dwMediaModes

lpCallParams

dwAsciiCallParamsCodePage

Reserved2

Reserved3

Reserved4

Reserved5

Reserved6

Reserved7

Reserved8

Reserved9

Reserved10

VarData (variable)

...

Req_Func (4 bytes): An unsigned 32-bit integer. The identifier of the function that will be invoked on the remote server. This value MUST be set to 127.

Return Values

On completion of ClientRequest, this field MUST contain the result of the encapsulated telephony request. A value of 0 indicates success, and a LINEERR_Constants value indicates failure. The remote server MUST complete this call synchronously.

MUST return zero if the function succeeds or an error number if an error occurs. Common return values are as follows:

Name

Value

LINEERR_INVALLINEHANDLE

0x8000002B

LINEERR_OPERATIONFAILED

0x80000048

LINEERR_NODRIVER

0x80000043

LINEERR_RESOURCEUNAVAIL

0x8000004B

LINEERR_NOMEM

0x80000044

LINEERR_INVALMEDIAMODE

0x8000002F

LINEERR_OPERATIONUNAVAIL

0x80000049

Reserved1 (4 bytes): An unsigned 32-bit integer. MUST be set to zero when sent and MUST be ignored on receipt.

hLine (4 bytes): An HLINE. The handle to the line on which media monitoring and parameter capabilities are to be set. This field MUST have been obtained by sending the Open packet.

dwMediaModes (4 bytes): An unsigned 32-bit integer. The media types currently of interest to the calling application. This parameter MUST use one or more of the LINEMEDIAMODE_Constants.

lpCallParams (4 bytes): An unsigned 32-bit integer. The offset in the VarData field of a LINECALLPARAMS packet.

  • dwBearerMode

  • dwMinRate

  • dwMaxRate

  • dwMediaMode

  • dwCallParamFlags

  • dwAddressMode

If dwAddressMode is LINEADDRESSMODE_ADDRESSID, any address on the line is acceptable. If dwAddressMode is LINEADDRESSMODE_DIALABLEADDR, indicating that a specific originating address (phone number) is searched for, or if it is a provider-specific extension, then dwOrigAddressSize/Offset and the portion of the variable part they refer to are also relevant. If dwAddressMode is a provider-specific extension, additional information can be contained in the dwDeviceSpecific variably sized field. All other fields are irrelevant to the function.

dwAsciiCallParamsCodePage (4 bytes): An unsigned 32-bit integer. This MUST be set to TAPI_NO_DATA (0xFFFFFFFF).

Reserved2 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved3 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved4 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved5 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved6 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved7 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved8 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved9 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

Reserved10 (4 bytes): An unsigned 32-bit integer. This field is used for padding and MUST be ignored on receipt. It can be any value.

VarData (variable): Contains a LINECALLPARAMS packet.

The contents of this field MUST be DWORD-aligned, as specified in [MS-DTYP] section 2.2.9.