Disconnects a media channel between two MSPP endpoints.
DWORD mspDisconnect ( MSPHD ephd1, MSPHD chnhd, MSPHD ephd2 )
Argument |
Description |
ephd1 |
First MSPP endpoint handle. |
chnhd |
MSPP channel handle. |
ephd2 |
Second MSPP endpoint handle. |
Return value |
Description |
SUCCESS |
|
CTAERR_BAD_ARGUMENT |
Function argument includes an invalid value or a required pointer argument is NULL. |
CTAERR_INVALID_CTAHD |
Handle is invalid. |
CTAERR_INVALID_HANDLE |
Invalid handle was passed as an argument to this function. |
MSPERR_CHANNEL_NOT_CONNECTED |
The specified MSPP channel is not connected to any endpoints. |
MSPERR_DRIVER_COMMAND_FAILED |
An SPI command has failed. |
MSPERR_INTERNAL_HANDLE |
Specified MSPP endpoint/channel is not valid. |
MSPERR_INVALID_CONNECTION |
Specified MSPP connection cannot be found. |
MSPERR_INVALID_HANDLE |
Specified MSPP endpoint/channel is not valid. |
Event |
Description |
MSPEVN_DISCONNECT_DONE |
Generated when an MSPP channel is disconnected from two endpoints in response to an mspDisconnect function call. The event.value field can contain the following: CTA_REASON_FINISHED MSPRSN_FAILED_TO_DEALLOCATE MSPP service is unable to deallocate on-board resources. MSPRSN_FAILED_TO_INTRADISCONNECT MSPP service is unable to disconnect filters within the channel. MSPRSN_FAILED_TO_INTERDISCONNECT MSPP service was unable to disconnect the channel from an endpoint. The event.objHd indicates the chnhd of the disconnected channel. |
When called, mspDisconnect disassociates the MSPP endpoints and MSPP channel in a specified connection. The application specifies endpoint handles in the same order it used when creating the connection with mspConnect.
For example, in the case of voice channels, ephd1 must point to an RTP endpoint and ephd2 must point to a DS0 endpoint. In the case of fax channels, ephd1 must point to a UDP endpoint (for fax) and ephd2 must point to a DS0 endpoint. The application must disable channels and endpoints associated with the connection (using mspDisableChannel and mspDisableEndpoint) before using mspDisconnect.
ret = mspDisconnect( hEp1, hChan, hEp2);
if (ret != SUCCESS)
return FAILURE;
// Wait for event
ctaWaitEvent( hCtaQueHd, &Event, CTA_WAIT_FOREVER );
// Check the reason code
if ( Event.id != MSPEVN_DISCONNECT_DONE ||
Event.value != CTA_REASON_FINISHED )
return FAILURE;